1011 数的计算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1011 数的计算相关的知识,希望对你有一定的参考价值。

我们要求找出具有下列性质数的个数(包含输入的自然数n):

先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理:

1.          不作任何处理;

2.          在它的左边加上一个自然数,但该自然数不能超过原数的一半;

3.          加上数后,继续按此规则进行处理,直到不能再加自然数为止.

简单的递推dp[n]=dp[n/2]+…+dp[1]+n/2(因为每加一个就多一个,一共加了n/2个);

所以代码如下

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef double db;
#define X first
#define Y second
#define mp(a,b) make_pair(a,b)
#define pb push_back
#define sd(x) scanf("%d",&(x))
#define Pi acos(-1.0)
#define sf(x) scanf("%lf",&(x))
#define ss(x) scanf("%s",(x))
#define maxn 50005
const int inf=0x3f3f3f3f;
const ll mod=1000000007;
int dp[1005];
int main()
{
    #ifdef local
    freopen("in","r",stdin);
    //freopen("out","w",stdout);
    int _time=clock();
    #endif
    for(int i=1;i<=1000;i++)
    {
        for(int j=1;j<=i/2;j++)
        {
            dp[i]+=dp[j]+1;
        }
    }
    int n;
    cin>>n;
    cout<<dp[n]+1<<endl;
    #ifdef local
    printf("time: %d\\n",int(clock()-_time));
    #endif
}
View Code

 

以上是关于1011 数的计算的主要内容,如果未能解决你的问题,请参考以下文章

codevs1011 数的计算

白银组codevs_1011 数的计算

18.2.14 codevs1011 数的计算

怎么计算二进制数的运算

poj 1011 sticks 解题。

计算机负数为什么使用补码及浮点型计算