HDOJ 1042 N! 大数
发布时间:2021-01-11 12:09:57 所属栏目:大数据 来源:网络整理
导读:Given an integer N(0 ≤ N ≤ 10000),your task is to calculate N!? Input One N in one line,process to the end of file.? Output For each N,output N! in one line.? Sample Input 123 Sample Output 126 思路:没啥思路
1 2 3 1 2 6 思路:没啥思路啊。。就大数搞,用大数模拟乘法,从低位到高位每一位都和i相乘,然后处理进位; 最后除去首0元素逆序输出即可; #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #define N 40000// 10000的阶乘最少36000位 using namespace std; int a[N],n; int main() { ? ?int i,j,tem,s; ? ? ?while(cin>>n) ? ? ?{ ? ? ? ? ? ? ? memset(a,sizeof(a));//每次初始化? ? ? ?a[0]=1; ? ? ? ? ? for(i=2;i<=n;i++) ? ? ? ? ? { ? tem=0; ? ? ? ? ? for(j=0;j<N;j++) ? ? ? ? ? { ? ?s=a[j]*i+tem; ? ? ? ? ? ? ? ?a[j]=s%10; ? ? ? ? ? ? ? ?tem=s/10; ? ? ? ? ? } ? ? ? ? ? } ? ? ? ? ? i=N-1; ? ? ? ? ? while(i>=0&&a[i]==0) ? ? ? ? ? i--; ? ? ? ? ? for(i;i>=0;i--) ? ? ? ? ? printf("%d",a[i]); ? ? ? ? ? printf("n"); ? ? ? ? ?? ? ? ?} ? ? ?return 0; } (编辑:湘西站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |