您的位置:首页 > 其它

UVA 10940 Throwing cards away II

2011-12-15 22:23 459 查看
UVA_10940

列举出前有限项就会发现规律,f(1)=1,f(n)=f(2^m+k)=2*k,其中k<=2^m<n。

#include<stdio.h>
#include<string.h>
#define MAXD 500010
int f[MAXD], N;
void prepare()
{
int i, k;
k = 1;
f[1] = 1;
for(i = 2; i <= 500000; i ++)
{
if(k * 2 < i)
k *= 2;
f[i] = 2 * (i - k);
}
}
int main()
{
prepare();
for(;;)
{
scanf("%d", &N);
if(!N)
break;
printf("%d\n", f
);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: