HDU 2940 Hex Factorial (简单高精度)
2015-06-21 15:44
218 查看
题意:求一n!的16进制表示的0的个数。
高精度模拟,或者直接java即可。这里可以给一个高精度模板。
高精度模拟,或者直接java即可。这里可以给一个高精度模板。
#include<cstdio> #include<cstdio> #include<cmath> #include<queue> #include<stack> #include<string> #include<cstring> #include<iostream> #include<map> #include<vector> #include<algorithm> #include<set> #include<cmath> using namespace std; const int mmax = 10010; const int inf = 0x3fffffff; struct Bignum { int Sz; int num[mmax]; void print() { for(int i=Sz-1;i>=0;i--) printf("%0x",num[i]); puts(""); } Bignum() {} Bignum(int sz,char *a) { Sz=sz; for(int i=0;i<Sz;i++) { num[i]=a[Sz-1-i]-'0'; } } Bignum(int sz,int *a) { Sz=sz; for(int i=0;i<Sz;i++) num[i]=a[i]; } Bignum(int x) { Sz=0; while(x) { num[Sz++]=x%16; x/=16; } } Bignum operator + (const Bignum &a) { int tmp[mmax]; memset(tmp,0,sizeof tmp); int len=max(Sz,a.Sz); for(int i=0;i<len;i++) { tmp[i]+=num[i]+a.num[i]; tmp[i+1]+=tmp[i]/10; tmp[i]%=10; } return Bignum(len+(tmp[len]?1:0),tmp); } Bignum operator - (const Bignum &a) { int tmp[mmax]; memset(tmp,0,sizeof tmp); int len=max(Sz,a.Sz); for(int i=0;i<len;i++) { tmp[i]+=num[i]-a.num[i]; if(tmp[i]<0) { tmp[i+1]-=1; tmp[i]+=10; } } for(int i=len-1;i>=0;i--) { if(tmp[i]) return Bignum(i+1,tmp); } return Bignum(1,tmp); } Bignum operator * (const Bignum &a) { int tmp[mmax]; memset(tmp,0,sizeof tmp); for(int i=0;i<Sz;i++) for(int j=0;j<a.Sz;j++) { tmp[i+j]+=num[i]*a.num[j]; } for(int i=0;i<Sz+a.Sz;i++) { tmp[i+1]+=tmp[i]/16; tmp[i]%=16; } for(int i=Sz+a.Sz-1;i>=0;i--) { if(tmp[i]) return Bignum(i+1,tmp); } return Bignum(1,tmp); } }; int main() { int n; while(cin>>n && n>=0) { Bignum ans(1); for(int i=1;i<=n;i++) ans=ans*Bignum(i); int cnt=0; for(int i=0;i<ans.Sz;i++) { if(ans.num[i]==0) cnt++; } printf("%d\n",cnt); } return 0; }
相关文章推荐
- 使用Fiddler截断更改Request数据
- 另外一篇关于Linux库的文章(静态库,动态库)
- Android开发中执行方法中含有监听时的处理
- 【韩顺平jsp教程笔记一】MySql下关于分页时取出前几条记录方法(不同于SqlServer)
- 深刻教训,C#中MVC控制器名称,非区域中不能为UploadController
- sgu 230
- Mysql-ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
- Apache--Override参数详解
- sgu 230 分类: sgu 2015-06-21 15:42 22人阅读 评论(0) 收藏
- 深刻教训,C#中MVC控制器名称,非区域中不能为UploadController
- 数据库:第16周作业
- Uva - 11054 - Wine trading in Gergovia
- 【Maven】Eclipse下Maven工程多模块继承和聚合创建
- Uva - 11054 - Wine trading in Gergovia
- 花生壳转发服务失败怎么办
- 【Maven】Maven最佳实践:划分模块
- 解决android中出现的无法加载library的问题
- 让Python代码更快运行的5种方法
- 国王的烦恼
- 解决android中出现的无法加载library的问题