本人初学计算机C++语言,请问这道习题怎么做,调了很长时间了。
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int num;
cin>>num;
int n=1;
long long a=0;
for(int i=1;i<60;i++)
{
a=pow(2,n-1);
n++;
a+=a-1;
cout<<a<<endl;
if(a>num)
{
cout<<"获得"<<num<<"颗米"<<"共需要"<<i<<"个棋格。"<<endl;
break;
}
}
return 0;
}
#include<cstdio>
unsigned long long n;
unsigned long long pow(int x,int y)
{
unsigned long long p = 1;
for(int l = 1;l <= y;l ++) p *= x;
return p;
}
int main()
{
for(int i = 1;i <= 64;i ++)
{
unsigned long long w = pow(2,i - 1);
n += w;
printf("第 %d 个格子共有:%lld , 当前格子有 :%lld\n",i,n,w);
}
}