1415. [NOIP2001]数的计数

2018-06-17 23:06:14来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

☆   输入文件:nums.in   输出文件:nums.out   简单对比
时间限制:1 s   内存限制:256 MB

【题目描述】

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

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

l·不作任何处理:

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

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

 

【输入格式】

       自然数n

【输出格式】

       满足条件的数的个数

【样例输入】

6

【样例输出】

6

【数据范围及提示】

       如题中所说,1<=n<=1000

【来源】

思路:

当我第一眼看到这个题的时候我就大吃一惊,因为我夏令营的时候做过原题,但仔细看看好像有些不同,这个只是让你输出最终结果,没有让你输出每种情况。但是我犯了一个错误,就是按照原来做的思路枚举每种情况的方式去把这个题转换成一个类似数据结构的题。但是这道题是有规律的,第i个数,就是前i/2个数所有情况之和,再加上本身…….

 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 int main()
 5 {
 6     freopen("nums.in","r",stdin);
 7     freopen("nums.out","w",stdout);
 8     int a[1001],n;
 9     cin>>n;
10     a[1]=1;
11     for(int s=2;s<=n;s++)
12     {
13         a[s]=0;
14         for(int i=1;i<=s/2;i++)
15         {
16             a[s]+=a[i];
17         }
18         a[s]++;
19     }
20     cout<<a[n];
21     return 0;
22 }
View Code

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:14:求10000以内n的阶乘

下一篇:解决oj哈夫曼树问题,学习了priority_queue