zoukankan      html  css  js  c++  java
  • CCF NOI1069 分解因数

    问题链接CCF NOI1069 分解因数




    时间限制: 1000 ms  空间限制: 262144 KB

    题目描述 

      给出一个正整数a,要求分解成若干个正整数的乘积,即a=a1*a2*a3*...*an,并且1<a1<=a2<=a3<=...<=an,问这样的分解方案有多少种。注意a=a也是一种分解。

    输入

      第一行是测试数据的组数n,后面n行,每行包括一个正整数a(1<a<32768)。

    输出

      N行,每行输出一个个正整数,表示分解方案数。

    样例输入

    2

    2

    20

    样例输出

    1

    4

    数据范围限制

      1<a<32768




    问题分析

      这是一个因子分解计数问题

      计算的是方案数,各个方案中,因子是增大的。

    程序说明

      编写函数plan()用于计算方案数。

    要点详解

    • 将共用功能用封装到函数中是一种好的做法。



    参考链接:(略)。

    100分通过的C语言程序:

    #include <stdio.h>
    
    int plan(int n, int start)
    {
        int count, i;
    
        if(n == 1)
            return 1;
        else {
            count = 0;
            for(i=start; i<=n; i++)
                if(n % i == 0)
                    count += plan(n / i, i);
            return count;
        }
    }
    
    int main(void)
    {
        int n, a;
    
        scanf("%d", &n);
        while(n--) {
            scanf("%d", &a);
    
            printf("%d
    ", plan(a, 2));
        }
    
        return 0;
    }



  • 相关阅读:
    08-Linux命令【rm】
    07-Linux命令【mv】
    06-Linux命令【cp】
    05-Linux命令【rmdir】
    04-Linux命令【mkdir】
    03-Linux命令【ls】
    02-Linux命令【cd】
    01-Linux命令【pwd】
    智慧城市3D园区
    自我觉醒
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7563833.html
Copyright © 2011-2022 走看看