大数。。。。
英语不好永远是弱点,。。。。。。
题意:每次取剩余的一般和半个,最后一次去完,问取n次之前的原巧克力数;
2 7 第2个人拿7/2=3.5+0.5个,剩3个,第一个拿3/2=1.5+0.5个,剩余1个;最后Angel拿1/2=0.5+0.5=1个;
数列为f(n)=f(n-1)*2+1;f(0)=1; (哎,用大数写的时候还犹豫。。。。。最后竟然还忘了05d的格式标准,水啊!!)
ac代码:
#include<stdio.h>
int a[1002][1002]={0};
void f(int *s,int *b)
{
int i;
s[0]=1;
for(i=0;i<b[1001];i++)
{
s[i]+=b[i]*2;
s[i+1]+=s[i]/100000;
s[i]=s[i]%100000;
}
if(s[i])
s[1001]=i+1;
else
s[1001]=i;
}
int main()
{
int n,i;
a[0][0]=1;a[0][1001]=1;
for(i=1;i<1001;i++)
f(a[i],a[i-1]);
while(scanf("%d",&n)!=EOF)
{
i=a[n][1001]-1;
printf("%d",a[n][i]);
for(i--;i>=0;i--)
printf("%05d",a[n][i]);
printf("\n");
}
return 0;
}