P1028

题目描述

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

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

  1. 不作任何处理;

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

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

输入输出格式

输入格式:

  1个自然数n(n≤1000)

输出格式:

  1个整数,表示具有该性质数的个数。

输入输出样例

输入:

6

输出:

6

分析:

  这道题理论上是可以用暴力递归的,但是会超时。

  也可以写递推公式:

  首先,f[n]表示输出符合的个数。

  n=0、n=1时,f[n]=1

  n=2,f[n]=2  n=3,f[n]=2

  n=4,f[n]=4  n=5,f[n]=4

  n=6,f[n]=6  n=7,f[n]=6

  可以看出,2n与2n+1(n为非负整数)的答案是一样的。

  以8为例,

    8

    18  28      

                128     138    148  248

                      1248

  排序树??

  ①当我们把8和8下面的左三棵子树放在一起,并将所有的8都改成7,我们能发现,我们得到了n=7时的所有解。//n-1

     7

                  

                  127   137   

  我们再把最右端的子树(即剩下的部分)中的所有8删去,我们得到了n=4时的所有解。//n/2

       4

              14   24

          124

  取n时,类比上例。

  于是,可以得到: f[i]=f[i-1]+f[i/2]。

  我们又知道2n与2n+1(n为非负整数)的答案是一样的。

  所以,n为偶数时,直接用递推公式,n为奇数时,把它换成对应的偶数再套递推公式。

代码:

 #include <bits/stdc++.h>  //注意是斜杠而不是反斜杠
using namespace std;
int main(){
int n,f[];
f[]=f[]=;
cin>>n;
for(int i=;i<=n;i++){
  if(i%==)f[i]=f[i-]+f[i/];
  else f[i]=f[i-];
}
printf("%d",f[n]);
return ;
}

P1028 数的计算的更多相关文章

  1. 洛谷 P1028 数的计算【递推】

    P1028 数的计算 题目描述 我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理: 1.不作任何处理; 2.在它 ...

  2. luogu P1028 数的计算 x

    P1028 数的计算 题目描述 我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理: 1.不作任何处理; 2.在它 ...

  3. 【递推】P1028数的计算

    题目相关 题目描述 我们要求找出具有下列性质数的个数(包含输入的正整数 n). 先输入一个正整数 n(n ≤1000),然后对此正整数按照如下方法进行处理: 不作任何处理: 在它的左边加上一个正整数, ...

  4. 洛谷P1028数的计算

    https://www.luogu.org/problemnew/show/P1028 只用递归会超时,需要用递归型动规,用一个数组保存已经算过的值,避免重复计算. 求数字为n的方案数的最优子结构为: ...

  5. 洛谷 P1028 数的计算

    嗯... 首先这道题想到的就是递推.... 但是递推失败 (不知道自己是怎么想的 然后又想打一个暴力,但是数的最高位太难存储了,所以又放弃了(并且好像这个暴力大约500就会炸... 然后看了题解,才发 ...

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

    题意:链接:https://www.luogu.org/problem/P1028 先输入一个自然数n (n≤1000) , 然后对此自然数按照如下方法进行处理: 不作任何处理; 在它的左边加上一个自 ...

  7. 洛谷P1028 数的计算 题解 动态规划入门题

    题目链接:https://www.luogu.com.cn/problem/P1028 题目描述 我们要求找出具有下列性质数的个数(包含输入的自然数 \(n\) ): 先输入一个自然数 \(n(n \ ...

  8. (递推)codeVs1011 && 洛谷P1028 数的计算

    题目描述 Description 我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理: 1.          不 ...

  9. P1028 数的计算 洛谷

    https://www.luogu.org/problem/show?pid=1028 题目描述 我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n<=1000), ...

随机推荐

  1. vue中使用sass

    1.npm安装 npm install sass-loader --save-dev npm install node-sass --save-dev //--save写入到package.json里 ...

  2. 使用insert ignore来避免向数据库重复插入数据

    mysql中 insert ignore 的使用示例如下: INSERT IGNORE INTO `table_name` (`reportid`, `content`) VALUES (‘11111 ...

  3. MySQL的常用命令:添加外键,修改字段名称,增加字段 设置主键自增长等

    Mysql命令添加外键 前提是有这么几个表  以mall_product 和 mall_category为例 ALTER TABLE mall_product ADD CONSTRAINT fore_ ...

  4. BZOJ1997 平面图判定 平面图性质 2-sat

    相交的两条边不能在同一侧,用2-sat即可. 平面图点数-边数关系 \(E\le 3V-6\) 写这篇文章我只是想说明,知乎一小时,题解一分钟. lb Zhihu, gos langar Qarwet ...

  5. Continued Fractions CodeForces - 305B (java+高精 / 数学)

    A continued fraction of height n is a fraction of form . You are given two rational numbers, one is ...

  6. 安装pandas时出现环境错误

    在安装pandas时出现Could not install packages due to an EnvironmentErrorConsider using the `--user` option ...

  7. MySQL优化技巧总结

    MySQL优化的几个大方向 ① 硬件优化 ② 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进行参数调整 ③ SQL语句方面的优化 ④ 表方面的优化   硬件优化 cpu,内存, ...

  8. 运行Maven项目时出现invalid LOC header (bad signature)错误,Tomcat不能正常启动

    作为Maven小白,今天这问题困扰了我好久,经过多次在网上查询,终于找到了原因.明明一个小问题却耗费很多时间,着实不应该,所以必须记录一下. 报错信息如下: 对话框: 控制台: <span st ...

  9. mybatis之批量插入

    一.导入功能优化 普通for循环,对于导入大量数据时非常耗时.可以通过Mybatis的批量插入功能提高效率.每批次导入的数据不能太多,否则会报错.通过测试发现,每批次200条为宜. 测试结果: 开启事 ...

  10. [转帖]利用hydra(九头蛇)暴力破解内网windows登录密码

    利用hydra(九头蛇)暴力破解内网windows登录密码 https://blog.csdn.net/weixin_37361758/article/details/77939070 尝试了下 能够 ...