题目描述
给定一个数n(0 <= n <= 150), 求0到n中所有数的阶乘。
输入
题目有多组数据,处理到文件结尾。输入一个数n。
输出
输出阶乘,形式如:4! = 24.每组数据输出后跟一个空行。
示例输入
1
4
1 4
示例输出
0! = 1
1! = 1
0! = 1
1! = 1
2! = 2
3! = 6
4! = 24
- #include <iostream>
- #include <algorithm>
- #include <cstring>
- using namespace std;
- const int sum=2000;
- int main()
- {
- int f[sum];
- int i,j,n,x,y,c,s;
- while(cin>>n)
- {
- for(x=0;x<=n;x++)
- {
- memset(f,0,sizeof(f));
- f[0]=1;
- for(i=2;i<=x;i++)
- {
- c=0;
- for(j=0;j<sum;j++)
- {
- s=f[j]*i+c;
- f[j]=s%10;
- c=s/10;
- }
- }
- for(j=sum-1;j>=0;j--)
- {
- if(f[j]!=0) break;
- }
- cout<<x<<"! = ";
- for(i=j;i>=0;i--)
- {
- cout<<f[i];
- }
- cout<<endl;
- }
- cout<<endl;
- }
- return 0;
- }
-
0! = 1 1! = 1 0! = 1 1! = 1 2! = 2 3! = 6 4! = 24
- #include <iostream>
- #include <algorithm>
- #include <cstring>
- using namespace std;
- const int sum=2000;
- int main()
- {
- int f[sum];
- int i,j,n,x,y,c,s;
- while(cin>>n)
- {
- for(x=0;x<=n;x++)
- {
- memset(f,0,sizeof(f));
- f[0]=1;
- for(i=2;i<=x;i++)
- {
- c=0;
- for(j=0;j<sum;j++)
- {
- s=f[j]*i+c;
- f[j]=s%10;
- c=s/10;
- }
- }
- for(j=sum-1;j>=0;j--)
- {
- if(f[j]!=0) break;
- }
- cout<<x<<"! = ";
- for(i=j;i>=0;i--)
- {
- cout<<f[i];
- }
- cout<<endl;
- }
- cout<<endl;
- }
- return 0;
- }