[恢]hdu 2502

2011-12-15 03:44:22

地址:http://acm.hdu.edu.cn/showproblem.php?pid=2502

题意:中文。。。

mark:应该有公式,不过直接递推吧。。。dp[i]表示所有长度小于等于i的数共有多少个1。

代码:

# include <stdio.h>
# include <stdlib.h>


int dp[25] = {0, 1} ;


int main ()
{
int i ;
for (i = 2 ; i <= 20 ; i++)
dp[i] = dp[i-1] * 2 + (1 << (i-1)) ;
scanf ("%d", &i) ;
while (~scanf ("%d", &i))
{
printf ("%d\n", dp[i-1] + (1 << (i-1))) ;
}
return 0 ;
}



posted @ 2012-01-06 15:14  Seraph2012  阅读(200)  评论(1编辑  收藏  举报