数的计数(Noip2001)
Posted liufei-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数的计数(Noip2001)相关的知识,希望对你有一定的参考价值。
【题目描述】 我们要求找出具有下列性质数的个数(包括输入的自然数n)。先输入一个自然数n(n≤1000),然后对此自然数按照如下方法进行处理: 不作任何处理; 在它的左边加上一个自然数,但该自然数不能超过原数的一半; 加上数后,继续按此规则进行处理,直到不能再加自然数为止。 【输入】 自然数n(n≤1000)。 【输出】 满足条件的数。 【输入样例】 6 满足条件的数为 6(此部分不必输出) 16 26 126 36 136 【输出样例】 6
#include <iostream> using namespace std; int h[1005]; int main() { int n,i; cin>>n; h[1]=1; for(i=2;i<=n;i++) { if(i%2==0) h[i]=h[i-1]+h[i/2]; else h[i]=h[i-1]; } cout<<h[n]<<endl; return 0; }
这道题目有很多解法,穷尽法一个一个递归的话会超时;
找出规律发现:i为奇数时,h[i]=h[i-1];i为偶数时,h[i]=h[i-1]+h[i/2]
以上是关于数的计数(Noip2001)的主要内容,如果未能解决你的问题,请参考以下文章