1261 大数与常数的乘除
来源:互联网 发布:森海塞尔隔音效果 知乎 编辑:程序博客网 时间:2024/05/17 03:04
#include<iostream>#include<vector>#include<string>#include<algorithm>using namespace std;int num[27];vector<string>facs;string Divide(const string &str,int n){ int len=str.size()-1; string s=""; int c=0,p=0; for(int i=0;i<=len;i++){ c=p*10+str[i]-'0'; p=c%n; c/=n; if(c==0&&s.size()==0)continue; else s+=(c+'0'); } return s;}string Multiple(const string &str,int n){ int len=str.size()-1; int c=0,p=0; string s=""; for(int i=len;i>=0;i--){ c=(str[i]-'0')*n+p; p=c/10; c%=10; s+=(c+'0'); } while(p){ c=p%10; p/=10; s+=(c+'0'); } reverse(s.begin(),s.end());//字符串倒置 return s;}void Calucate_Facs(){ facs.push_back("1");//0的阶乘 facs.push_back("1");//1的阶乘 facs.push_back("2");//2的阶乘 string tmp="2"; for(int i=3;i<=26*12;i++){ tmp=Multiple(tmp,i); facs.push_back(tmp); }}int main(){ Calucate_Facs();//一开始打表计算阶乘 int n; while(~scanf("%d",&n)&&n){ string s="",str=""; int sum=0; for(int i=0;i<n;i++){ scanf("%d",&num[i]); sum+=num[i]; } str=facs[sum]; for(int i=0;i<n;i++){ for(int j=2;j<=num[i];j++){ str=Divide(str,j); } } cout<<str<<endl; } return 0;}
0 0
- 1261 大数与常数的乘除
- 大数乘除的汇编代码
- 大数乘除
- HDU 1261(全排列,大数乘除)
- 大数乘除(hdoj1023)
- [原创]汇编实现大数乘除运算的雏形
- 大数相加减乘除计算器
- 地址与常数的加减
- 移位与乘除关系
- 位运算与乘除运算的对比实验
- 大数模板-加乘除-String类实现
- ios中与π相关的常数
- 自然常数 e 的理解与应用
- 乘除与求余运算
- 二进制整数的乘除运算
- hdu 1133(卡特兰数+大数乘除+阶乘)
- poj 2084 Game of Connections (卡特兰数,大数乘除)
- [Intel汇编-MASM]与或以及乘除
- 用java的IO流和集合创建一个存储指定文件列表示例
- 从内存模型角度来看C++多态实现机制
- uva 11605 - Lights inside a 3d Grid(概率)
- HDU-4374-One hundred layer
- 第6部分:AOP
- 1261 大数与常数的乘除
- 为何说我们需要山寨币
- HDU 1196 Lowest Bit
- 好久没有更新blog了
- 将n进制的数组压缩成字符串(0-9 a-z)同时解压
- tomcat使用教程
- java GUI设计和布局
- 悟道—位IT高管20年的职场心经(读书笔记二)
- 为什么必须保护Robots协议?