ACM-大数之N!——hdu1042
来源:互联网 发布:为什么都说程序员不好 编辑:程序博客网 时间:2024/05/21 08:51
N!
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 51640 Accepted Submission(s): 14540
Problem DescriptionGiven an integer N(0 ≤ N ≤ 10000), your task is to calculate N!
InputOne N in one line, process to the end of file.
OutputFor each N, output N! in one line.
Sample Input123
Sample Output126
这道题题意很简单,就是大数的乘法,N的阶乘,你也看到题目中 N可能到达10000,所以,即使用Long long也是望尘莫及的。这道题的方法就是:建立一个整形数组,每个数组存五位数,大于五位的 num/100000进位,num%100000存起来这道题的依据就是加法和乘法的分配率,用分段相乘:1234*11=11*(12*10^2+34)=11*12*10^2+11*34,上面是如果一个数组内存两位,存五位也是类似的。
还要注意两点:①. 在乘的时候末尾可能出现很多0的情况,所以,什么时候要向前算判定要清楚②. 在最后输出的时候,除了最高位的不用补0,其他位数的都需要补0第二个方法我用的是C的printf解决。
//N!#include <stdio.h>#include <string.h>int arr[8001],k;int main(){int i,j,n,jinwei;int num;while(scanf("%d",&n)!=EOF){memset(arr,0,sizeof(arr));arr[0]=1;k=0;// 从1到n循环for(j=1;j<=n;++j){jinwei=0;for(i=0;i<=k;++i){num=arr[i]*j+jinwei;if(num>99999)jinwei=num/100000;elsejinwei=0;arr[i]=num%100000;// 如果到了最高位,仍有进位if(i==k && jinwei!=0){++k;arr[k]=jinwei;break;}}}// 注意格式,第一个输出的不需要补0,后面需要补0for(i=k;i>=0;--i)if(i==k)printf("%d",arr[i]);elseprintf("%05d",arr[i]);printf("\n");}return 0;}
123
126
//N!#include <stdio.h>#include <string.h>int arr[8001],k;int main(){int i,j,n,jinwei;int num;while(scanf("%d",&n)!=EOF){memset(arr,0,sizeof(arr));arr[0]=1;k=0;// 从1到n循环for(j=1;j<=n;++j){jinwei=0;for(i=0;i<=k;++i){num=arr[i]*j+jinwei;if(num>99999)jinwei=num/100000;elsejinwei=0;arr[i]=num%100000;// 如果到了最高位,仍有进位if(i==k && jinwei!=0){++k;arr[k]=jinwei;break;}}}// 注意格式,第一个输出的不需要补0,后面需要补0for(i=k;i>=0;--i)if(i==k)printf("%d",arr[i]);elseprintf("%05d",arr[i]);printf("\n");}return 0;}
0 0
- ACM-大数之N!——hdu1042
- hdu1042——N!
- HDU1042——N!
- hdu1042-N!(大数)
- hdu1042 N!(大数)
- hdu1042 N!_大数
- HDU1042 - N! (大数运算)
- HDU1042 N! 大数阶乘 Java
- hdu1042——实现大整数N!
- hdu1042 N! (高精度\大数阶乘)
- 杭电ACM—— 1042 N!大数阶乘
- HDU1042 N!
- hdu1042 N!
- N! hdu1042
- hdu1042 N!
- HDU1042--N!
- hdu1042 N!
- HDU1042 N!
- 《程序员修炼之道:从小工到专家》笔记-----第一章
- 第十章、vim 程序编辑器
- 作业
- 第十一章、认识与学习 BASH
- Sprite Kit学习笔记(一)初探
- ACM-大数之N!——hdu1042
- 《高效学习OpenGL》 之 缓冲区及其用途 glDrawBuffer(),glReadBuffer(),glColorMask(),glClearBuffer()
- 硬盘文件丢失怎么恢复好
- VTK调研
- 第十二章、正规表示法与文件格式化处理
- 远程服务器telnet到server速度很快,但是ssh连接的时候却很慢.
- c++ 基本操作 知识点
- Js中的回调函数(普联实习)
- 一个优秀的上级对你有多重要?