CODE[VS]-数的计算-递推-天梯白银
题目描述 Description
先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理:
1.不作任何处理;
2.在它的左边加上一个自然数,但该自然数不能超过原数的一半;
3.加上数后,继续按此规则进行处理,直到不能再加自然数为止.
一个自然数n(n<=1000)
输出格式:
一个整数,表示具有该性质数的个数。
输入样例:
6
输出样例:
6
思路:这题可以单纯地用模拟来做,但是这会比较麻烦,不如考虑用递推来做更快
要用递推肯定要先求出递推公式,随便代入几个数据就可以发现规律如下图所示:
aaarticlea/png;base64,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" alt="" width="772" height="48" />
从这张表可以发现,对于奇数的i,a[i]的值是和前面的偶数的a[i]值是一样的,所以得到公式①:a[i]=a[i-1](i%2==1)
那么对于偶数呢?这就可能有点小难度了,通过观察a[i]这一行可以发现,任何一个值都能在前面找到两个数使得这两个数相加恰好等于这个值,那么是不是这样呢?如果是那两个值的下标i是固定的算法么?
举个栗子:如果i=6,对应的a[i]=6,从前面的值开始找,6=2+4,a[i]值为2的i=6/2,a[i]值为4的i=6-1,从这里基本就可以得到公式②:a[i]=a[i-1]+a[i/2](i%2==0)
再举个栗子验证一下:如果i=10,那么i/2,i-1对应的a[i]值为4、6,4+6=10,所以我们就可以认定这个就是正确的递推公式了^_^
首先对于数组进行初始化处理,这里我的i是从3开始循环的,a[1]=1,a[2]=2,然后就可以开始用循环了,记得要分情况讨论(奇数偶数是不一样的公式)
代码如下:
#include <stdio.h>
int main()
{
int a[]={},n,i;
scanf("%d",&n);
a[]=;
a[]=;
for(i=;i<=n;i++)
{
if(i%==)
{
a[i]=a[i-];
}
else
{
a[i]=a[i-]+a[i/];//递推公式
}
}
printf("%d\n",a[n]);
return ;
}
CODE[VS]-数的计算-递推-天梯白银的更多相关文章
- [ACM_动态规划] 数字三角形(数塔)_递推_记忆化搜索
1.直接用递归函数计算状态转移方程,效率十分低下,可以考虑用递推方法,其实就是“正着推导,逆着计算” #include<iostream> #include<algorithm> ...
- 题解报告:hdu 2084 数塔(递推dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这 ...
- 51nod 1556 计算(递推)
传送门 解题思路 在一个网格图上走\(n\)步,每次可以向右上,右下,右,但必须在第一象限,最后从\((0,0)\)走到\((n,0)\)的方案数为默慈金数.递推式为\(m[i+1]=\frac{(2 ...
- [Vijos1130][NOIP2001]数的计数 (递推)
自己的递推一塌糊涂 考前抱佛脚 #include<bits/stdc++.h> using namespace std; ]; int main() { int n;scanf(" ...
- HDU 2502 月之数(简单递推)
月之数 Problem Description 当寒月还在读大一的时候,他在一本武林秘籍中(据后来考证,估计是计算机基础,狂汗-ing),发现了神奇的二进制数.如果一个正整数m表示成二进制,它的位数为 ...
- 洛谷 P1028 数的计算【递推】
P1028 数的计算 题目描述 我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理: 1.不作任何处理; 2.在它 ...
- 洛谷--P1028 数的计算(递推)
题意:链接:https://www.luogu.org/problem/P1028 先输入一个自然数n (n≤1000) , 然后对此自然数按照如下方法进行处理: 不作任何处理; 在它的左边加上一个自 ...
- 【递推】P1028数的计算
题目相关 题目描述 我们要求找出具有下列性质数的个数(包含输入的正整数 n). 先输入一个正整数 n(n ≤1000),然后对此正整数按照如下方法进行处理: 不作任何处理: 在它的左边加上一个正整数, ...
- BZOJ-1002 轮状病毒 高精度加减+Kirchhoff矩阵数定理+递推
1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 3543 Solved: 1953 [Submit][Statu ...
随机推荐
- .NET/Mono
C#(或者说.NET/Mono)能做的那些事 不做语言之争,只陈述事实: 1.桌面软件 不仅是在Windows上,有了开源的Mono,在Apple Mac和Linux(如:Ubuntu)上也有C#的施 ...
- DTD
DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块. 它使用一系列的合法元素来定义文档结构. DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用. 内部的 DOCTYPE 声明 ...
- JAVA学习:异常
一.异常官方定义: 1.就是不正常.程序在运行时出现的不正常情况.其实就是程序中出现的问题.这个问题按照面向对象思想进行描述,并封装成了对象.因为问题的产生有产生的原因.有问题的名称.有问题的描述等多 ...
- JQuery的插件式开发
如果你只会JQuery的插件式开发, 那么你可以进来看看? 对于JQuery的学习,已经有3年多的时间了,直到去年与我的组长一起做项目,看到他写的JS,确实特别漂亮,有时甚至还看不太懂, 我才发现其实 ...
- JavaScript插件——弹出框
(JavaScript插件——弹出框) 前言 阅读之前您也可以到Bootstrap3.0入门学习系列导航中进行查看http://www.cnblogs.com/aehyok/p/3404867.htm ...
- .NET4.5 Console.ReadKey()在多线程下的BUG
.NET 4.5 在多线程的控制台里,Console.ReadKey()可能会造成线程死锁.看代码: static void Main(string[] args) { System.Timers.T ...
- SQLite数据库操作 (原始操作)
android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API, 使用该类可以完成对数据进行添加(Create).查询(Retrieve).更新(Update)和删除( ...
- 最小堆实现优先队列:Python实现
最小堆实现优先队列:Python实现 堆是一种数据结构,因为Heapsort而被提出.除了堆排序,“堆”这种数据结构还可以用于优先队列的实现. 堆首先是一个完全二叉树:它除了最底层之外,树的每一层的都 ...
- 软件快速开发平台 WebBuilder 6.8
WebBuilder是一款开源的跨平台.数据库和浏览器的可视化Web应用快速开发平台.WebBuilder使用了多项最新的技术,使Web应用的开发更快捷和简单. 作为一款高效的Web开发工具,WebB ...
- slxna,游戏页面切到后台回来后返回sl页面导致sl页面无响应,解决方法。
slxna在wp7上表现很好,因为那会xna还是微软的亲儿子.但是到wp8时代,微软丢弃xna,不管不问了.但是丢之前没有把兼容搞的完美,以致有很多隐秘的坑,说不定就踩到了. 我这个游戏的sl页面用了 ...