zoukankan      html  css  js  c++  java
  • NOIP2001数的计算

    题目描述

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

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

    1.不作任何处理;

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

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

    输入输出格式

    输入格式:

    一个自然数n(n<=1000)

    输出格式:

    一个整数,表示具有该性质数的个数。

    输入输出样例

    输入样例#1: 复制
    6
    
    输出样例#1: 复制
    6
    

    说明

    满足条件的数为

    6,16,26,126,36,136

    本来打算用递归但是时间爆掉了,这件事提醒我一定要算时间复杂度,然后认真一想,有很多重复的过程,于是用两个for循环,一个累加直接过

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    using namespace std;
    int n,m,ans=1;
    int d[1100];
    int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
    d[i]=1;
    for(int j=1;j<=i/2;j++)
    d[i]+=d[j];
    }
    cout<<d[n];
    }

  • 相关阅读:
    java微信扫码支付(模式二)
    Python学习08
    学习java第12天
    学习java第11天
    学习java第十天
    学习Java第九天
    学习Java第八天
    学习Java第六天
    学习Java第六天
    学习Java第五天
  • 原文地址:https://www.cnblogs.com/linzeli/p/7750004.html
Copyright © 2011-2022 走看看