Code Bye

#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 位等等),对程序展开详细分析,说明迭代参数设置和采用的数据结构,分析怎么样保证迭代的正确进行,怎么样保证精度等等各个方面进行分析、最后总结。
解决方案

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;
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明