HDU1592(递推+大数处理)

来源:互联网 发布:windows apache php7 编辑:程序博客网 时间:2024/06/08 04:26

Half of and a Half

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 792    Accepted Submission(s): 350


Problem Description
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
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;
 


 

Output
For every N inputed, tell how many chocolates Gardon had at first.
 


 

Sample Input
2
 


 

Sample Output
7
 


递推+大数处理

#include<iostream>
using namespace std;
int a[100];

int main()
{
 int n,i,j,temp;
 int len;
 while(scanf("%d",&n)!=EOF)
 {
  memset(a,0,sizeof(a));
  len=0;
  a[len]=1;
  for(i=1;i<=n;i++)
  {
   temp=0;
   for(j=0;j<=len;j++)
   {
    if(j==0)
     a[j]=(a[j]+0.5)*2;
    else a[j]=a[j]*2+temp;
    temp=a[j]/10000;
    a[j]=a[j]%10000;
   }
   if(temp)
   {
    len++;
    a[len]=temp;
   }
  }
  printf("%d",a[len]);
  for(i=len-1;i>=0;i--)
   printf("%04d",a[i]);
  printf("\n");
  
 }
 return 0;
}

 

 

 

原创粉丝点击