以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 C/C++编程思想 』 (http://bbs.xml.org.cn/list.asp?boardid=61) ---- “大整数阶乖”问题的递推算法 (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=58609) |
-- 作者:卷积内核 -- 发布时间:1/29/2008 3:34:00 PM -- “大整数阶乖”问题的递推算法 //:============================“大整数阶乖”问题的递推算法=========================== #define MAXN 1000 //最大数据位数 //用递推法求取整数k的阶乖,将结果放入数组array中 void pnext(int array[],int k) { int *temp; //动态数组[临时存储运算大整数] int i,j,num_len = array[0],carry,t; //循环变量,长整数位数,进位标志,临时变量 if(array[0] >= MAXN) { printf("数据处理位数超过程序设计上限,程序将自动中断运行!\n"); exit(1); } temp = (int *)malloc(sizeof(int) * (num_len + 1)); //创建动态数组 for(i=1;i<=num_len;i++) temp[i] = array[i]; //保存原始数据 for(j=1;j<k;j++) { for(carry = 0,i=1;i<=num_len;i++) { if(i <= array[0]) t = array[i] + temp[i] + carry; else t = array[i] + carry; //处理最高位 //数据位调整 array[i] = t % 10; carry = t / 10; } if(carry) array[++num_len] = carry; //在最高位记录进位标志 } free(temp); array[0] = num_len; } //显示阶乖结果 void Show_Result(int array[],int base_number) { int i; printf("%4d!=",base_number); for(i=array[0];i>0;i--) printf("%d",array[i]); printf("\n\n"); } //计算数据的阶乖 void Count_Result(int array[], int base_number) { int k; array[0] = 1; array[1] = 1; for(k=2;k<=base_number;k++) { pnext(array,k); Show_Result(array,k); } } //:============================“大整数阶乖”问题的递推算法===========================
|
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
31.006ms |