hdu-大数的阶乘
来源:互联网 发布:黑马程序员php视频 编辑:程序博客网 时间:2024/05/14 06:01
N!
Time Limit : 10000/5000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 65 Accepted Submission(s) : 18
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem 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
123
Sample Output
126
Author
做这道题时我们应先回顾一下我们中学时是如何计算多位数相乘的,我们首先列个竖式,先用下面的数去乘上面的每一位相加便可。
代码:
#include <iostream>#define N 35662using namespace std;int main(){ int n,p,q,k,i,j,l,t; while(cin>>n) { int s[N]={0}; s[0]=1; t=1; for(i=2;i<=n;i++) { q=0; for(j=0;j<t;j++) { p=s[j]*i+q; s[j]=p%10; q=p/10; } while(q) { s[t++]=q%10; q/=10; } } for(k=t-1;k>=0;k--) cout<<s[k]; cout<<endl; } return 0;}
另一种方法:不如第一个简便但思路就是中学的那种竖式相乘法
#include <iostream>#include <cstring>using namespace std;int a[100000],b[200000];int main(){ int n,i,p,t,s,l,j; while(cin>>n) { if(n==1||n==0) cout<<'1'<<endl; else { memset(b,0,sizeof(b)); t=1; a[0]=1; for(i=2;i<=n;i++) { p=0; for(j=0;j<t;j++) { s=a[j]*i+p; p=s/10; b[j]=s%10; a[j]=b[j]; } while(p) { b[t]=p%10; a[t]=b[t]; t++; p/=10; } } for(l=t-1;l>=0;l--) cout<<b[l]; cout<<endl; } } return 0;}
0 0
- hdu-大数的阶乘
- HDU 1042 大数的阶乘
- HDU-求大数的阶乘
- 1000的阶乘-HDU 1042-大数阶乘(万进制思想)
- HDU-1042(大数阶乘)
- hdu 1042 大数阶乘
- HDU 1042 大数阶乘...
- HDU 1042 大数阶乘
- hdu 1042 大数阶乘 ,
- 大数阶乘-N的阶乘
- HDU-1042(大数阶乘_java)
- hdu 1042 阶乘--大数乘法
- HDU 1042 N!(大数阶乘)
- HDU 1042 N! N的阶乘(大数)
- 大数的阶乘
- 模块化的大数阶乘
- mr 的大数阶乘
- 大数阶乘的算法
- 寻找副本-Qsort
- 设计模式学习总结
- win7 + maven + nexus + Eclipse
- linux 管道产生子shell
- 用Nib(Xib)来实现自定义Cell
- hdu-大数的阶乘
- java 常用报表工具 简介
- TabSpec.setIndicator图片标题只能显示一个的解决办法
- Java计算字符在字符串内出现的次数
- Hibernate——Query查询
- Struts 2版验证码
- ThinkPHP验证码
- Win32 Linux汇编语法区别
- projecteuler No.78 Coin partitions