您的位置:首页 > 编程语言 > C语言/C++

算法分析与设计C++大整数数组汉诺塔双塔实现

2019-09-24 17:42 507 查看

利用公式a[i] = 2^i - 1.

#include<iostream>
#include<string.h>
using namespace std;
struct num{
int a[1000];
int s=1;
};
void Mul(num &m){
for(int j=0; j<m.s; j++){
m.a[j] *=2;
}
for(int j=0; j<m.s; j++){
m.a[j+1] += m.a[j]/10;
m.a[j] %= 10;
}
while(m.a[m.s] != 0){
m.a[m.s+1] += m.a[m.s]/10;
m.a[m.s] %= 10;
m.s++;
}
}

int main(){
int m;
cin>>m;

num p;
memset(p.a,0,sizeof(p.a));
p.a[0]=1;
for(int i=0; i<m; i++){
Mul(p);
}
for(int i=0; i<p.s; i++){
if(p.a[i] != 0){
p.a[i]--;
break;
}
p.a[i] = 9;
}
Mul(p);
for(int i = p.s-1; i>=0; i--){
cout<<p.a[i];
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MUL
相关文章推荐