您的位置:首页 > 其它

杭电ACM 第2047题

2018-03-10 15:24 295 查看
#include<iostream>
#include<stdlib.h>
#define N 100000000
using namespace std;
void main(){
unsigned n;
long int sa[55];
long int sb[55];
memset(sa,0,sizeof(long int)*55);
memset(sb,0,sizeof(long int)*55);
sa[0]=0;
sa[1]=3;
sa[2]=8;
long int a,b,c,d,e;
a=b=c=d=e=0;
bool t=true;
for(int i=3;i<22;++i){
sa[i]=sa[i-1]*2+sa[i-2]*2;
}
a=sa[20]%N;
b=sa[20]/N;
c=sa[21]%N;
d=sa[21]/N;

sa[20]=a;
sb[20]=b;
sa[21]=c;
sb[21]=d;
for(int j=22;j<55;++j){
sa[j]=(sa[j-1]*2+sa[j-2]*2)%N;
e=(sa[j-1]*2+sa[j-2]*2)/N;[/b]
sb[j]=sb[j-1]*2+sb[j-2]*2+e;

}

while(cin>>n){

int qwq=n;
if(qwq<=19)
cout<<sa[qwq]<<endl;
else{
if(sb[qwq]==0)
cout<<sa[qwq]<<endl;
else{

cout<<sb[qwq];
long int fff=sa[qwq];
int z=-1;
for(;fff<N;++z){
fff*=10;
}
while(z--){
cout<<"0";
}
cout<<sa[qwq]<<endl;
}
}

}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法