标签:
问题:如题
回答:
#include<cstdio>
#include<cmath>
int p(int n)
{
int ans,r;
if(n==1) return 1;
ans=0;
r=(int)(sqrt(8*n+1)-1)/2;
ans+=pow(2,r)-1;
ans+=2*p(n-r);
return ans;
}
int main()
{
int n;
while(scanf("%d",&n)==1)
printf("%d\n",p(n));
return 0;
}
该题主要通过递归得出一条规律公式,然后通过公式就可以轻松解题了。
标签:
原文地址:http://www.cnblogs.com/benchao/p/4479444.html