Gardon bought many many chocolates from the A Chocolate Market (ACM). When he was on the way to meet Angel, he met Speakless by accident.
"Ah, so many delicious chocolates! I'll get half of them and a half!" Speakless said.
Gardon went on his way, but soon he met YZG1984 by accident....
"Ah, so many delicious chocolates! I'll get half of them and a half!" YZG1984 said.
Gardon went on his way, but soon he met Doramon by accident....
"Ah, so many delicious chocolates! I'll get half of them and a half!" Doramon said.
Gardon went on his way, but soon he met JGShining by accident....
"Ah, so many delicious chocolates! I'll get half of them and a half!" JGShining said.
.
.
.
After had had met N people , Gardon finally met Angel. He gave her half of the rest and a half, then Gardon have none for himself. Could you
tell how many chocolates did he bought from ACM?
输入格式
Input contains many test cases.
Each case have a integer N, represents the number of people Gardon met except Angel. N will never exceed 1000;
输出格式
For every N inputed, tell how many chocolates Gardon had at first.
样例输入
2
样例输出
7
ans[i]=ans[i-1]*2+1,需要大数。
#include<stdio.h>
#include<string.h>
int res[320],w;
void cal(){
int i,flag=0;
if(res[0]>=5){
res[0]=2*res[0]%10+1;
flag=1;
}
else{
res[0]=2*res[0]+1;
flag=0;
}
for(i=1;i<w;i++){
if(res[i]>=5){
res[i]=2*res[i]%10+flag;
flag=1;
}
else{
res[i]=2*res[i]+flag;
flag=0;
}
}
if(flag==1){
res[w]=1;
w++;
}
}
int main(){
int n,i;
while(scanf("%d",&n)==1){
memset(res,0,sizeof(res));
res[0]=1;w=1;
for(i=n;i>0;i--)
cal();
for(i=w-1;i>=0;i--)
printf("%d",res[i]);
printf("\n");
}
return 0;
}