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

    数的计算——(递归(超时)和非递归)

    时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte
    总提交:1050            测试通过:312

    描述

    要求找出具有下列性质数的个数(包含输入的自然数n):
    先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理:
    1. 不作任何处理;
    2. 在它的左边加上一个自然数,但该自然数不能超过原数的一半;
    3. 加上数后,继续按此规则进行处理,直到不能再加自然数为止.

    输入

    一个自然数n

    输出

    一个数,表示满足条件的数的个数

    样例输入

    6

    样例输出

    6

    提示

    样例说明:满足条件的数是6,16,26,126,36,136

    题目来源

    NOIP2001 普及组

     1 #include<iostream>
     2 using namespace std;
     3 static int sum=1;
     4 static int arr[1000]={0};
     5 void fun(int& k)//递归方法
     6 {
     7     if(k==0)
     8     return ;
     9     for(int i=1;i<=k;i++)
    10     {
    11         sum++;
    12         int k2=i/2;
    13         fun(k2);        
    14     }
    15 }
    16 
    17 int f(int& k){//非递归方法才用全局数组保存计算结果
    18     int count=0;
    19     if(k==0)
    20         return 0;
    21     int i;
    22     for(i=1;i<=k;i++){
    23         if(arr[i]!=0){
    24         count+=arr[i];
    25         }
    26         else{
    27         int k2=i/2;
    28         arr[i]=f(k2)+1;
    29         }
    30     }
    31     if(count!=0)
    32         return count;
    33     return arr[k];
    34 }
    35 int main()
    36 {
    37     int n1;
    38     cin>>n1;
    39     int k=n1/2;
    40     fun(k);
    41     cout<<sum<<endl;
    42     cout<<f(n1)<<endl;
    43     return 0;
    44 }

    http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1010

     
  • 相关阅读:
    布局重用 include merge ViewStub
    AS 常用插件 MD
    AS 2.0新功能 Instant Run
    AS .ignore插件 忽略文件
    AS Gradle构建工具与Android plugin插件【大全】
    如何开通www国际域名个人网站
    倒计时实现方案总结 Timer Handler
    AS 进行单元测试
    RxJava 设计理念 观察者模式 Observable lambdas MD
    retrofit okhttp RxJava bk Gson Lambda 综合示例【配置】
  • 原文地址:https://www.cnblogs.com/BasilLee/p/3856381.html
Copyright © 2011-2022 走看看