NYOJ 28 大数阶乘

来源:互联网 发布:java 实现ll 1 文法 编辑:程序博客网 时间:2024/05/16 08:54

链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=28

大数问题。

模拟手工运算,用一个变量储存进位:被乘数逐位乘以乘数。

 

#include <stdio.h>#include <string.h>#include <stdlib.h>int ans[20000];char tem[5];int t;//储存进位int main(){int i,j;int k;int c;scanf("%s",tem);for(i=strlen(tem)-1,j=0;i>=0;i--,j++)ans[j]=tem[i]-'0';k=strlen(tem);for (i=2;i<atoi(tem);i++)//要乘的数{for (j=0;j<k;j++)//当前的要乘的位{c=ans[j]*i+t;ans[j]=c%10;t=c/10;//进位}while(t!=0){ans[j]=t%10;t=t/10;k++;//长度+1j++;}}for (i=j-1;i>=0;i--)printf("%d",ans[i]);printf("\n");return 0;}


 

0 0
原创粉丝点击