zoukankan      html  css  js  c++  java
  • 15.数的计算(递归算法)

     时间限制: 1 s

     空间限制: 128000 KB

     题目等级 : 白银 Silver

    题解

     查看运行结果

    题目描述 Description

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

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

    1.          不作任何处理;

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

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

    输入描述 Input Description

    一个数n

    输出描述 Output Description

    满足条件的数的个数

    样例输入 Sample Input

    6

    样例输出 Sample Output

    6

    数据范围及提示 Data Size & Hint

    6个数分别是:

    6

    16

    26

    126

    36

    136

    程序一:

    可以将总数与每个数都求出来

    #include

    using namespace std;

    #include

    char a[5];

    #include

    int n,l;

    int p[100],t=0;

    int pow(int x,int n)

    {

           int t=1;

           for(int i=1;i<=n;++i)

           t*=x;

           return t;

     }

    void input()

    {

           scanf("%s",a);

           l=strlen(a);

           for(int i=l-1,j=0;i>=0;i--,j++)

           n+=(a[i]-'0')*pow(10,j);

    }

    void search(int i,int n,int l1)

    {

           p[++t]=i*pow(10,l1)+n;//注意pow函数pow10,2=99

           for(int j=1;j<=i/2;j++)

           search(j,i*pow(10,l1)+n,l1+1);

    }

     

    int main()

    {

           input();

           p[++t]=n;

           for(int i=1;i<=n/2;++i)

        search(i,n,l);

        printf("%d ",t);

        for(int i=1;i<=t;++i)

        printf("%d ",p[i]);

           return 0;

    }

    程序二:

    仅求出总数

    #include

    using namespace std;

    #include

    char a[5];

    #include

    #include

    int n,l;

    int p[100],t=0;

    void input()

    {

           scanf("%s",a);

           l=strlen(a);

           for(int i=l-1,j=0;i>=0;i--,j++)

           n+=(a[i]-'0')*pow(10,j);

    }

    void search(int i,int n,int l1)

    {

           ++t;//注意pow函数pow10,2=99

           for(int j=1;j<=i/2;j++)

           search(j,i*pow(10,l1)+n,l1+1);

    }

     

    int main()

    {

           input();

           ++t;

           for(int i=1;i<=n/2;++i)

        search(i,n,l);

        printf("%d ",t);

           return 0;

    }

  • 相关阅读:
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    冒泡排序和选择排序
  • 原文地址:https://www.cnblogs.com/csgc0131123/p/5290530.html
Copyright © 2011-2022 走看看