please看看这用循环语句咋做呀

国际象棋棋盘有64格,若在第1格放1粒谷;第2格放2粒谷;
第3格放4粒谷;第4格放8粒谷……如此一直放到第64格。假设2000000粒谷有一吨重,
问需要多少吨谷才够放?
感觉是用for循环的,但是又不知道怎么写

from math import *
sum=0
for n in range(1,65):
    m=int(pow(2,n-1))
    sum=sum+m
sum=sum/2000000.0
print("sum=%d" % sum)

用python还是c++写呢
python:

import math
sum=0
t=1
for i in range(0,64):
    t=t
    sum+=t
    t=t*2
print (math.ceil(sum/2000000))

img

C语言

#include<stdio.h>

int main()

{int i,n,a,b,c;

a=b=0;

c=1;

scanf("%d",&n);

for(i=1;i<n;i++)

{c*=2;

b=b*2+c/1000000000;

c=c%1000000000;

a=a*2+b/1000000000;

b=b%1000000000;

}

if(a)printf("%d%09d%09d\n",a,b,c);

else if(b)printf("%d%09d\n",b,c);

else printf("%d\n",c); 

return 0;

}