题目 国王的许诺 相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜欢象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着8x8共64格的象棋盘说:陛下,请您赏给我一些麦子吧,就在棋盘的第1个格子中放1粒,第2格中放2粒,第3格中放4粒,以后每一格都比前一格增加1倍,依此放完棋盘上的64个格子,我就感恩不尽了。舍罕王让人扛来一袋麦子,他要兑现他的许诺。请问:国王能兑现他的许诺吗?分别采用两种累加方法(直接计算累加的通项,利用前项计算后项)编程计算舍罕王共需要多少麦子赏赐他的宰相,这些麦子合多少立方米(已知1立方米麦子约1.42x10^8粒)。
#include <bits/stdc++.h>
int main() {
double sum = 0;
double v;
for (int i = 1; i <= 64; i++) {
sum += pow(2, i - 1);
}
v = sum / 1.42e8;
printf("%e\n%e", sum, v);
return 0;
}
#include <bits/stdc++.h>
int main() {
int sum = 0;
double v;
for (int i = 1; i <= 64; i++) {
sum += pow(2, i - 1);
}
v = sum / 1.42e8;
printf("%e\n%e", sum, v);
return 0;
}
为什么对于sum的数据类型定义不同会有不同的结果,按理来说sum不是个整型吗。。。为什么double型才能得出正确答案?