棋盘上的麦粒
作者:互联网
题目描述
舍罕是古印度的国王,据说他十分好玩。宰相依达尔为了讨好国王,发明了现今的国际象棋献给国王。国王非常喜欢,决定嘉奖宰相,许诺满足宰相提出的任何要求。宰相指着棋盘要求:“陛下,请您按棋盘的格子赏赐我一点小麦吧,第一个小格赏我1粒麦子,第二个小格赏我2粒,第三个小格赏4粒,以后每一小格都比前一个小格赏的麦子增加一倍,只要把棋盘上全部64个小格按这样的方法得到的麦子都赏赐给我,我就心满意足了”。国王听了宰相这个“小小”的要求,马上同意了。但是在给宰相麦子时,国王发现他要付出的比自己想象的要多得多,于是进行了计算,结果令他大惊失色。问题是:舍罕王的计算结果是多少粒麦子。
输入要求
输入一个整数n代表棋盘的格子,该数字大于1且小于等于64。如输入2,则表示有2个格子,第一个格子放1粒,第二个格子放2粒,则2个格子一共需要3粒麦子。
输出要求
输出n个格子需要的麦粒数。
输入样例
9
输出样例
511
提示
注意:本题输出数据可能极大。
如果麦粒数sum如下定义:
unsigned __int64 sum;
则计算完成后其输出形式为:
printf("%I64u\n", sum);
参考程序
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,a;
unsigned __int64 sum=0;
scanf("%d",&n);
for(i=0; i<n; i++)
{
a = pow(2,i);
sum += a;
//sum += pow(2,i);语句出错
}
printf("%I64u\n",sum);
return 0;
}
标签:麦子,麦粒,格子,sum,小格,棋盘,宰相 来源: https://blog.csdn.net/weixin_44643510/article/details/113738956