印度国王分米这个怎么编呀?
古代印度有一位国际象棋大师,棋艺高明,受到国王尊重,愿让他在国王宝库随意挑选财宝,作为奖赏。但这位大师什么也不要,只请国王在他棋盘的64个方格里按第一格放一粒小麦、第二格放二粒、第三格放四粒、第四格放八粒,按后一格是前一格二倍的规律放下去,直到放满64格。这个怎么编呀?
----------------解决方案--------------------------------------------------------
等比数列求和公式~~
晕,笔算还来得快些
----------------解决方案--------------------------------------------------------
#include<stdio.h>
#include<math.h>
void main()
{
int x;
printf("输入方阁数: ");
scanf("%d", &x);
printf("Total: %g\n",(pow(2,x)-1));
getch();
}
----------------解决方案--------------------------------------------------------
#include<stdio.h>
void main()
{
long a[100]={1};
int i;
for(i=1;i<=64;i++)
a[i]=2*a[i-1];
for(i=0;i<=64;i++)
{
printf("%ld",a[i]) ;
if(i%8=0)
printf("\n");
}
}
----------------解决方案--------------------------------------------------------
别想得太简单了,2^63 级别的大数岂是long和简单一个C库函数返回值所能容纳的
这起码得用数组和相应的求幂算法
[此贴子已经被作者于2005-1-13 6:57:14编辑过]
----------------解决方案--------------------------------------------------------
有道理
照你这么说得用数组模拟了 ?
[此贴子已经被作者于2005-1-12 22:30:42编辑过]
----------------解决方案--------------------------------------------------------
[原创]
以下是引用idealistic33在2005-1-12 15:20:38的发言:
#include<stdio.h>
#include<math.h>
void main()
{
int x;
printf("输入方阁数: ");
scanf("%d", &x);
printf("Total: %g\n",(pow(2,x)-1));
getch();
}
这个结论应该对吧? ----------------解决方案--------------------------------------------------------
#include <stdio.h> #include <math.h> double cacul(int i){ double n=1; long j; for(j=2;j<=i;j++){ n+=pow(2,i); } return n; } void main(){ int i; double n=0; double sum=0; for(i=1;i<=64;i++){ n=cacul(i); sum=sum+n; } printf("The totle sum is %lf \n",sum); } 不考虑,埋头算!呵呵! long型的确实得不到正确答案,需double型
----------------解决方案--------------------------------------------------------
应该对,我在vc6.0下运行,pow()函数是 double型的,所以最大值可以表达为: 2的64次方减1
----------------解决方案--------------------------------------------------------
人在江湖飘~^―_―^|||
[此贴子已经被作者于2005-1-13 20:36:18编辑过]
----------------解决方案--------------------------------------------------------