DOTCPP:有关1146心得
作者:互联网
有关1146
题目描述
相传国际象棋是古印度舍罕王的宰相达依尔发明的.舍罕王十分喜爱象棋,决定让宰相自己选择何种赏赐.这位聪明的宰相指着8*8共64格的象棋说:陛下,请您赏给我一些麦子吧.就在棋盘的第1格放1粒,第2格放2粒,第三格放4粒,以后每一格都比前一格增加一位,依此放完棋盘一64格,我就感激不尽了.舍罕王让人扛了一袋麦子,他要兑现他的许诺.
请问,国王要兑现他的许诺共要多少粒麦子赏赐他的宰相?
输入
无
输出
以整数形式输出,不要其它符号
思路
这个题就是计算20+21+22+…+263,主要考虑用一个什么类型的变量存放这个数据。因为数据很大,所以使用double
代码
#include<stdio.h>
#include<math.h>
int main()
{
int i;
double sum = 0;
for(i = 0; i < 64; i++)
{
sum += pow(2, i);
}
printf("%.0lf", sum);
return 0;
}
心得
- 在处理一些比较大的数据时,经常需要考虑选择什么类型的变量存储数据。
- 如果忘记某数据类型对应多少个字节可以在编译器中使用sizeof()函数。
- 一般来说64位windows系统中,char占一个字节,float占4个字节,double占8个字节,int占4个字节,short占2个字节,long占4个字节,long long占8个字节。
- 虽然double和long long看起来都是占8个字节,但是由于存储方式不同,double能存储比longlong存储的数据大得多的数据。
标签:1146,字节,格放,double,sum,long,DOTCPP,64,心得 来源: https://blog.csdn.net/weixin_41718056/article/details/88739290