N!
来源:互联网 发布:max更新数据失败 编辑:程序博客网 时间:2024/05/18 05:07
/*Crawling in process... Crawling failed Time Limit:5000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Submit Status
Description
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
1
2
3
Sample Output
1
2
6
*
#include<stdio.h>
#include<string.h>
const int max= 50000;
int f[max];
int main()
{
int i,j,n;
while(scanf("%d",&n)!=EOF)
{
memset(f,0,sizeof(f));
f[0]=1;
for(i=2;i<=n;i++)
{
int c=0;
for(j=0;j<max;j++) //存到数组里。
{
int s=f[j]*i+c;
f[j]=s%10;
c=s/10;
}
}
for(j=max-1;j>=0;j--) //输出那个数组。
if(f[j])
break;
for(i=j;i>=0;i--)
printf("%d",f[i]);
printf("\n");
}
return 0;
}*/
#include <stdio.h> #include<iostream>#include<string.h>using namespace std;#define N 10001 //计算N的阶乘,修改N的定义可计算10000以内任意数的阶乘 long a[N],n,i,c,m;int main(){ while(scanf("%d",&n)!=EOF) { memset(a,0,sizeof(a)); a[0]=1; m=0; for(;n>1;(a[i]=c)>0?m++:0,n--)//m是最高位 { for(c=0,i=0;i<=m;i++)//c为累加保存的进位 { a[i]=(c+=a[i]*n)%10000; c/=10000; } } for(printf("%d",a[m]);--m>=0;) printf("%04d",a[m]); printf("\n"); } return 0;
点击打开链接
#include<stdio.h>
#include<string.h>
#define N 50000 //计算N的阶乘,最多只能算到9999
long a[N],n,i,c,m;
int main()
{
while(scanf("%d",&n)!=EOF)
{
memset(a,0,sizeof(a));
a[0]=1;
m=0;
for ( ;n>1; (a[i]=c)>0?m++:0,n--)
{
for (c=0,i=0; i<=m;i++)
{
a[i]= (c+=a[i]*n)%10000;
c/=10000;
}
}
printf("%d",a[m]);
for( m--;m>=0;m--)
printf("%04d",a[m]);
printf("\n");
}
return 0;
}
- N!
- N!
- n
- N
- N!
- N!
- N!
- N!
- n!
- N!
- N!
- N!
- N!
- n
- N!
- N!
- N!
- n!
- Wi-Fi
- Tilera-Pro64 支持Broadcom HiGig标签
- iPhone 5手机未出 保护壳已开售
- gcc 编译多个源文件
- 数据库:ETL学习笔记之一:ETL是什么?
- N!
- POJ 2406
- Extjs4 官方文档翻译系列二:组件(components)、自定义组件
- 泛型句柄
- Android 如何在自己的应用中模拟Home键
- Display Drivers
- System and session state
- 让Javascript函数的注册 - 调用 - 销毁机制更简洁易用
- paip.asp vbs的代码折叠代码结构查看