计算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;
}

h1042 N!大数乘int的更多相关文章

  1. 数组实现int随机数的阶乘(避免大数问题)

    面试的一道题目,实现int随机数的阶乘.这道题就是考察你考没考虑大数问题,如何避免它. 我能想到的就是用数组去实现,然后写了一下代码.但是当i的值很大,接近Max_value时的情况还没有考虑到. 直 ...

  2. 【集训笔记】【大数模板】特殊的数 【Catalan数】【HDOJ1133【HDOJ1134【HDOJ1130

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3324 http://blog.csdn.net/xymscau/artic ...

  3. 大数加法(STL list)

    #include<iostream> #include<list> #include<string> using namespace std; int main() ...

  4. HDU 1715 (大数相加,斐波拉契数列)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1715 大菲波数 Time Limit: 1000/1000 MS (Java/Others)     ...

  5. HDU 1316 (斐波那契数列,大数相加,大数比较大小)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1316 Recall the definition of the Fibonacci numbers: ...

  6. CodeForces - 633D Fibonacci-ish 大数标记map+pair的使用

    Fibonacci-ish Yash has recently learnt about the Fibonacci sequence and is very excited about it. He ...

  7. hdu 1715 大菲波数(大数)

    题意:整数大数加法 思路:大数模板 #include<iostream> #include<stdio.h> #include<stdlib.h> #include ...

  8. hdu 1047 Integer Inquiry(大数)

    题意:整数大数加法 思路:大数模板 #include<iostream> #include<stdio.h> #include<stdlib.h> #include ...

  9. java 大数详细讲解

    介绍 java中用于操作大叔的类主要有俩种 第一个是BigInteger,代表大整数.第二个是BigDecimal,代表大浮点数.两种类的操作方法类似,所以我们只讲解BigInterger的用法 基本 ...

随机推荐

  1. Window下安装npm

    Node.js停火各大技术论坛都在讨论,前段时间工作太忙没时间学习,趁着周末空闲玩玩,在网上找了些资料发现Node.js本身有windows版和unix版下载和使用都挺方便但是其扩展模块依赖复杂通过手 ...

  2. AngularJs表单自动验证

    angular-auto-validate 地址:https://github.com/jonsamwell/angular-auto-validate 引用: <script src=&quo ...

  3. 来了解一下Redis的分布式锁

    分布式锁本质上要实现的目标就是在 Redis 里面占一个“茅坑”,当别的进程也要来占 时,发现已经有人蹲在那里了,就只好放弃或者稍后再试. 占坑一般是使用 setnx(set if not exist ...

  4. android 接受系统锁屏广播,及高版本发送广播

    protected BroadcastReceiver messageReceiver = new BroadcastReceiver() { @Override public void onRece ...

  5. C++面向对象高级开发课程(第二周)

    1. 类中含有指针—— class with pointer member(s) ——的情况经常发生,典型的有:string 类. 2. STL中的 string 类太复杂,copy on write ...

  6. 20145317彭垚_Web基础

    20145317彭垚_Web基础 基础知识 Apache一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一.它快速.可靠并且可 ...

  7. Python3基础 setattr 设置对象的属性值,如果属性不存在就创建

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  8. C# 获取SQL Server所有的数据库名称

    参考文章:http://www.cnblogs.com/Abel_cn/archive/2008/12/09/1351425.html http://blog.csdn.net/friendan/ar ...

  9. triggerHandler不执行事件默认值

    <input type="text" /> $('input').triggerHandler('focus');

  10. Unity3D学习笔记(二十三):事件接口、虚拟摇杆、层级管理和背包系统

    事件接口 IDragHandler(常用):鼠标按下拖动时执行(只要鼠标在拖动就一直执行) IDropHandler:对象拖动结束时,如果鼠标在物体的范围内,执行一次(依赖于IDragHandler存 ...