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 ...
随机推荐
- linux终端下文件不同颜色的含义
偶然注意到在终端下花花绿绿的目录显示效果,开始以为只是些特效,后来研究了一下,原来其中有些规律性的东西,总结如下: 蓝色表示目录:
- Eclipse添加Web和java EE插件
1.在Eclipse中菜单help选项中选择install new software选项 2.在work with 栏中输入 Juno - http://download.eclipse.org/re ...
- @Html.CheckBoxFor为何输出两种控件
在MVC中当使用@Html.CheckBoxFor时表单上会产生两种控件checkbox和hidden,比如: @Html.CheckBoxFor(model => model.IsTop) 对 ...
- 【转载】Stack Overflow: The Architecture - 2016 Edition
转载:http://www.infoq.com/cn/news/2016/03/Stack-Overflow-architecture-insi?utm_source=tuicool&utm_ ...
- jquery实现城市选择器效果(二级联动)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- BFS和DFS详解
BFS和DFS详解以及java实现 前言 图在算法世界中的重要地位是不言而喻的,曾经看到一篇Google的工程师写的一篇<Get that job at Google!>文章中说到面试官问 ...
- JS关闭当前页面的方法
JS关闭当前页面的方法 一.不带任何提示关闭窗口的js代码 1 <a href="javascript:window.opener=null;window.open('','_self ...
- mysql数据类型简介
MySQL的数据表类型很多,其中比较重要的是MyISAM,InnoDB这两种. 这两种类型各有优缺点,需要根据实际情况选择适合的,MySQL支持对不同的表设置不同的类型.下面做个对比: MyISAM表 ...
- TCPDump 抓Loopback数据包
编写网络程序必备截包工具, unix下面自带tcpdump, linux就不用说了.用于排查网络程序的bug,命令行如何使用请百度谷歌.分析包推荐wireshark,可视化非常方便.一般都是在非Win ...
- 16Khz音频定时触发采样DMA存储过程
一.AD Setting 1.Calibration (ADCAL) 2.设定ADC Chennel与SCANDIR等,在低功耗应用方案,选择PCLK/4,并设置SMP(tCONV = Samplin ...