h1042 N!大数乘int
计算10000以内某个数的阶乘,即大数乘以int,考虑到一个int存一个数位过于繁琐且浪费空间,采用万进制
一个int存四个位数,但注意除了最高位,其他位不够四位数时要加上前导0凑够四位;
例123456*15,3456在一个int(a[1])中,12在a[2]中,a[1]=3456*15=51840,a[2]=12*15=180;
a[1]>9999所以进位:a[2]+=a[1]/10000=185,a[1]%=10000=1840;
所以ans:185 1840;
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;180
int num[10005];
int main()
{
int n,i,j,k;
while (scanf("%d",&n)!=EOF){
memset(num,0,sizeof(num));
num[0]=num[1]=1;
for (i=2;i<=n;i++){
int len=num[0];
for (j=1;j<=len;j++) num[j]*=i;
for (j=1;j<=num[0];j++){
if (num[j]>9999) {num[j+1]+=num[j]/10000;num[j]%=10000;}
if (num[num[0]+1]) num[0]++;
}
}
for (i=num[0];i>=1;i--){
if(i!=num[0]){
if (num[i]>99&&num[i]<1000)
printf("0%d",num[i]);
else if (num[i]>9&&num[i]<100)
printf("00%d",num[i]);
else if(num[i]<9)
printf("000%d",num[i]);
else printf("%d",num[i]);
}
else printf("%d",num[i]);
}
printf("\n");
}
return 0;
}
最新文章
- 测试webAPP时图标背景一片黑色
- Usart的单线半双工模式(stm32F10x系列)
- [Angularjs]视图和路由(四)
- DMALL刘江峰:生鲜市场具有巨大O2O改造空间
- juggle
- maven添加jar包依赖
- JVM经常使用的调优參数
- mount的艺术
- Xcode Build Setting Reference
- android 豆瓣客户端 视频
- ios获取相册图片 压缩图片
- (iOS)谈谈关于使用category的静态库(原创)
- eclipse的xml文件提示templates的模板.md
- 流畅python学习笔记:第十九章:动态属性和特性
- SSM项目使用GoEasy 获取客户端上下线实时状态变化及在线客户列表
- hdu-4612(无向图缩点+树的直径)
- FB面经 Prepare: Even Tree
- nginx入门与实战
- ActiveMQ、RabbitMQ、RocketMQ、Kafka有什么优点和缺点
- vue学习【第七篇】:Vue之导入Bootstrap