高精度和错位排列
来源:互联网 发布:手机记牌器软件 编辑:程序博客网 时间:2024/05/11 08:54
#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>using namespace std;const int maxn=210,maxnlen=1000+10;struct number{ int x[maxnlen],len; number(){ memset(x,0,sizeof(x)); len=0; } /*number operator * (number a){ number res; res.len=len+a.len-1; for(int i=0;i<len;i++){ for(int j=0;j<a.len-1;j++){ res.x[i+j]=x[i]*a.x[j]; res.x[i+j+1]+=res.x[i+j]/10; res.x[i+j+1]%=10; } } while(res.x[res.len]){ res.x[res.len+1]=res.x[res.len]/10; res.x[res.len]%=10; ++res.len; } return res; }*/ number operator * (int b){ number res; res.len=len; for(int i=0;i<res.len;i++){ res.x[i]+=x[i]*b; res.x[i+1]+=res.x[i]/10; res.x[i]%=10; } while(res.x[res.len]){ res.x[res.len+1]+=res.x[res.len]/10; res.x[res.len]%=10; ++res.len; } return res; } number operator +(number a){ number res; res.len=max(len,a.len); for(int i=0;i<res.len;i++){ res.x[i]+=a.x[i]+x[i]; res.x[i+1]+=res.x[i]/10; res.x[i]%=10; } while(res.x[res.len]){ res.x[res.len+1]+=res.x[res.len]/10; res.x[res.len]%=10; ++res.len; } return res; } void print(){ for(int i=len-1;i>=0;i--)printf("%d",x[i]);printf("\n"); }}dp[maxn];int main(){ int i,j,k,m,n; scanf("%d",&n); dp[0].len=1;dp[0].x[0]=1; dp[1].len=1; for(i=2;i<=n;i++){ dp[i]=(dp[i-1]+dp[i-2])*(i-1); } dp[n].print(); return 0;}
0 0
- 高精度和错位排列
- 错位排列
- 错位排列
- 错位排列
- 神、上帝和老天爷 (错位排列)
- 错位排列-组合
- 全错位排列
- 全错位排列
- 全错位排列
- 全错位排列
- 全错位排列问题
- 全错位排列
- 全错位排列
- 全错位排列
- 错位排列的魅力
- hdu2048 错位排列
- HDOJ2048(错位排列)
- 错位排列-信封问题
- Java 多线程之join
- Tomcat配置虚拟路径,使上传文件与服务器及工程文件分离开
- C++类成员函数转换成函数对象
- python 分割 画图像的轮廓
- 树堆TreapMap 实现
- 高精度和错位排列
- SVM的个人理解
- UVa11324 The Largest Clique(强连通分量+DP)
- Andrew Stankevich Contest 6 B Under Control
- C++基础复习心得1
- 多线程之间共享哪些资源?
- datanode已启动,在UI界面下live nodes个数不对
- MySQL安装过程中出现的问题
- Kattis <Cryptographer's Conundrum>