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 ...
随机推荐
- 设计适用于SOA的类型(二)
接着上次的,以扩展String类型为例,继续根据自己的使用习惯闭门造车! 这一次我重载了运算符 = 和 + ,我觉得这样更方便我的使用.首先先贴代码: /// <summary> // ...
- 在ASP.NET MVC3 中利用Jsonp跨域访问
在ASP.NET MVC3 中利用Jsonp跨域访问 在信息系统开发的时,根据相关业务逻辑难免会多系统之间互相登录.一般情况下我们需要在多系统之间使用多个用户名和密码.这样客户就需要在多个系统之间重复 ...
- [转]Avoiding GDB Signal Noise.
原文:http://peeterjoot.wordpress.com/2010/07/07/avoiding-gdb-signal-noise/ A quick note for future ref ...
- js 冒泡 捕获
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> ...
- Exchange 2016 创建日程,远程服务器返回错误: (401) 未经授权
背景:在测试环境中一切正常,使用的是Exchange2013,上生产环境Exchange2016,部署后产生如下错误: Microsoft.Exchange.WebServices.Data.Serv ...
- 我的Emacs折腾经验谈(一) 一些给新人的建议
这几天都没有动力写mongodb的东西,我果然还是太懒了么~ 主要是没有一个系统的东西整理出来,加上我令人拙计的语言表达能力,这个坑只能慢慢再补了. 最近在折腾emacs这个东西,首先说我曾经算是个极 ...
- 让textbox紧贴IME
将textbox放与页面最下方,并取消ApplicationBar. IE的ApplicationBar里放个了textbox,效果很炫,最重要用户体验很好. 于是也想对自己textbox做这样的设计 ...
- 转载:JavaScript多线程编程简介
虽然有越来越多的网站在应用AJAX技术进行开发,但是构建一个复杂的AJAX应用仍然是一个难题.造成这些困难的主要原因是什么呢?是与服务器的异步通信问题?还是GUI程序设计问题呢?通常这两项工作都是由桌 ...
- lucene 查询+分页+排序
lucene 查询+分页+排序 1.定义一个工厂类 LuceneFactory 1 import java.io.IOException; 2 3 import org.apache.lucene.a ...
- MSSQL 清空日志 删除日志文件
MSSQL 清空日志 删除日志文件 最近的项目主要做数据的归档,把数据从一个数据库拉到另一个数据库,照成新数据库的日志文件非常大:于是想把日志文件删除.最简单就是先分离数据库->删除日志文件-& ...