哈理工2019大数阶乘n!problemII
2015-12-03 17:41
190 查看
#include<stdio.h>
int main()
{
int n,sum,num,ans;
int a[201];//a数组用来存储各个位上的数的答案.
while(~scanf("%d",&n))
{
a[0]=1;//0!=1;
num=1;//当前答案位数.
ans=0;//与其说是余数不如说是进位数.
for(int i=2;i<=n;i++)
{
for(int j=1;j<=num;j++)
{
sum=a[j-1]*i+ans;
a[j-1]=sum%10;
ans=sum/10;
}
while(ans)
{
a[num++]=ans%10;
ans/=10;
}
}
for(int i=num-1;i>=0;i--)
{
printf("%d",a[i]);
}
printf("\n");
}
}
n! problem II | ||||||
| ||||||
Description | ||||||
求阶乘看起来是一个很简单的问题,现在我们要计算一个不超过100的整数的阶乘。 | ||||||
Input | ||||||
本题有多组测试数据,对于每组数据输入一个非负整数n(n不大于100),输入处理到文件结束。 | ||||||
Output | ||||||
输出n的阶乘并换行。 | ||||||
Sample Input | ||||||
1 2 3 | ||||||
Sample Output | ||||||
1 2 6 | ||||||
Source | ||||||
杨和禹求职记 | ||||||
Author | ||||||
杨和禹 ※要注意,j-1才是当前位. |
int main()
{
int n,sum,num,ans;
int a[201];//a数组用来存储各个位上的数的答案.
while(~scanf("%d",&n))
{
a[0]=1;//0!=1;
num=1;//当前答案位数.
ans=0;//与其说是余数不如说是进位数.
for(int i=2;i<=n;i++)
{
for(int j=1;j<=num;j++)
{
sum=a[j-1]*i+ans;
a[j-1]=sum%10;
ans=sum/10;
}
while(ans)
{
a[num++]=ans%10;
ans/=10;
}
}
for(int i=num-1;i>=0;i--)
{
printf("%d",a[i]);
}
printf("\n");
}
}
相关文章推荐
- Android Crash日志抓取及保存
- 500 G JAVA视频网盘分享(Jeecg开源)
- android一款软件的反编译实现(APKtool)
- JSON 核心教程
- linux系统端口映射(路由转发)
- Android 4.4Telephony流程分析SIM卡开机时的数据加载
- java 字符串 与 unicode 之间互相转换
- Android Studio系列教程五--Gradle命令详解与导入第三方包
- actionscript3的一个bug 关于super
- ruby源码编译安装
- C# 小例子
- 微信支付报错误“出现了内部错误”或“无法找到证书路径” 解决方法
- ansible
- 常用Keytool 命令
- springMVC整合dubbo问题及解决方法
- mysql 分区 -
- Android Studio系列教程四--Gradle基础
- 杭电HDU1023卡特兰大数
- 实验三 进程调度模拟程序
- centos和ubuntu下使用cron设置定时任务