分解式的个数

来源:互联网 发布:mac您的磁盘未能分区 编辑:程序博客网 时间:2024/04/30 13:28

题目描述

大于1的正整数可以分解成一组因子的乘积,例如12可以分解成:12、6*2、4*3、3*4、3*2*2、2*6、2*3*2、2*2*3,共8个分解式。请设计算法,计算指定的大于1的正整数的分解式的个数。

输入

第一行为测试用例个数n,n≤100000。 从第二行开始,共有n行,每行为一个大于1的正整数m,m≤10001。

输出

对每个测试用例m,输出其分解式的个数,每个输出占一行。

样例输入

2412

样例输出

28

#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<malloc.h>using namespace std;int dp[10005];int main(){    int t;    while(~scanf("%d",&t)){        dp[2]=1;        int m;        m=2;        while(t--){            int n;            scanf("%d",&n);            if(m>=n)                printf("%d\n",dp[n]);            else{                int i,j;                for(m=m+1;m<=n;m++){                        dp[m]=1;                    //printf("%d %d\n",m,dp[m]);                    for(j=2;j<m;j++){                        if(m%j==0){                            dp[m]+=dp[j];                        }                    }                }                m--;                printf("%d\n",dp[n]);            }        }    }    return 0;}



0 0
原创粉丝点击