#include<stdio.h>
long a = 10000,b,c=2800,d,e,f[2801],g;
void main()
{for(;b-c; )
f[b++]=a/5;
for( ; d=0,g=c*2 ; c-=14,printf(“%.4d”,e+d/a),e=d%a)
for(b=c ; d+=f[b]*a,f[b]=d%–g,d/=g–,–b ; d*=b);
}
给出数学公式,并验证公式(利用较短位数,例如 10,20 位等等),对程序展开详细分析,说明迭代参数设置和采用的数据结构,分析怎么样保证迭代的正确进行,怎么样保证精度等等各个方面进行分析、最后总结。
long a = 10000,b,c=2800,d,e,f[2801],g;
void main()
{for(;b-c; )
f[b++]=a/5;
for( ; d=0,g=c*2 ; c-=14,printf(“%.4d”,e+d/a),e=d%a)
for(b=c ; d+=f[b]*a,f[b]=d%–g,d/=g–,–b ; d*=b);
}
给出数学公式,并验证公式(利用较短位数,例如 10,20 位等等),对程序展开详细分析,说明迭代参数设置和采用的数据结构,分析怎么样保证迭代的正确进行,怎么样保证精度等等各个方面进行分析、最后总结。
解决方案
30
仅供参考:
#include <stdio.h>
long a=10000;
long b;
long c=2800;
long d;
long e;
long f[2801];
long g;
int main() {
for(;b-c;) f[b++]=a/5;
// while (1) {
// if (0==b-c) break;
// f[b]=a/5;
// b++;
// }
//f[0 - 2800] = 10000/5
for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)
for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);
// while (1) {
// d=0;
// g=c*2;
// if (0==g) break;
// b=c;
// while (1) {
// d+=f[b]*a;
// f[b]=d%--g;
// d/=g--;
// --b;
// if (0==b) break;
// d*=b;
// }
// c-=14;
// printf("%.4d",e+d/a);
// e=d%a;
// }
return 0;
}