Hduoj2709【规律题】

来源:互联网 发布:c语言标准库函数有哪些 编辑:程序博客网 时间:2024/04/27 05:14
#include<stdio.h>int  a[1000010];int main(){int i, n;a[1] = 1;a[2] = 2;for(i = 3; i <= 1000000; ++i){if(i & 1)a[i] = a[i-1];elsea[i] = a[i-1] + a[i/2];if(a[i] >= 1000000000)a[i] %= 1000000000;}while(scanf("%d", &n) != EOF){printf("%d\n", a[n]);}return 0;}


题意:将一个数拆分成一些2^i数的和,共多少种情况。

思路:当n为奇数时,总会多出个1,即和n-1情况是一样的;当n为偶数时又分成2种情况,一种是有1的,则它分解的情况和n-1相同,一种是没1的,则情况数刚好和n/2是一样的,其实就是将a[n/2]的所有式子都乘以2。当n=1时为1,2时为2,递推1~1000000的答案。

0 0
原创粉丝点击