• 洛谷--P1028 数的计算(递推)


    题意:链接:https://www.luogu.org/problem/P1028

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

    1. 不作任何处理;

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

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

    输出满足该性质数的个数。

    Sample Input:       

    6                   

    Sample output

    6

    说明:满足条件的数为6,16,26,126,36,136 

    这道题是一道简单的递推题;我们可以先写几个样例:

    n=0或1,ans=1   

    n=2,ans=2

    n=3,ans=2,

    n=4,ans=4,

    n=5,ans=4,

    n=6,ans=6,

    n=7,ans=6,

    n=8,ans=10( 8,18,28,128,38,38,138,48,248,1248)

    n=9,ans=10,

    n=10,ans=14.......

    如果从前7个来看,很容易会认为如果n为偶数是,则等于它本身,奇数则是它的前一项偶数的个数

    但是出来了一个8,ans等于10

    所以,递推的规律就出来了

    n%2==0时

        F(n)=F(n-1)+F(n/2);

    n%2==1时

       F(n)=F(n-1);

    AC代码

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int maxn = 1000050;
    int fun[1005];
    int main() {
        int n;
        cin>>n;
        fun[0]=fun[1]=1;
        for(int i=2;i<=n;i++)
        {
            if(i%2==0)
                fun[i]=fun[i-1]+fun[i/2];
            else
                    fun[i]=fun[i-1];
        }
        cout<<fun[n]<<endl;
    }
    View Code
  • 相关阅读:
    ATCoder code festival 2016 qual C
    2019.10.26模拟赛
    2019.10.24模拟赛
    狄利克雷卷积和莫比乌斯反演学习笔记
    ljq的互测の题解
    noi.ac #39
    noi.ac #741 code
    noi.ac #65 triangle
    让别人也可以访问你电脑上的ASP.NET MVC创建的网站
    ASP.NET MVC 开发中遇到的两个小问题
  • 原文地址:https://www.cnblogs.com/acmer-hmin/p/11754081.html
Copyright © 2020-2023  润新知