poj 3421 X-factor Chains

来源:互联网 发布:unity3d场景制作 编辑:程序博客网 时间:2024/06/05 03:02

素因子分解,求所有素因子的全排列

#include <stdio.h>#include <string.h>int fac[30];int cnt[30];int len;long long Factorial(long long num){    long long ret = 1;    for(long long i = 1; i <= num; ++i)        ret *= i;    return ret;}int main(){    int num,rlen;    while(scanf("%d",&num) != EOF)    {        memset(cnt,0,sizeof(cnt));        len = rlen = 0;        for(int i = 2; i*i <= num; ++i)        {            if(num%i == 0)            {                fac[len] = i;                while(num%i == 0)                {                    num /= i;                    cnt[len]++;                    rlen++;                }                len++;            }        }        if(num > 1)        {            fac[len] = num;            cnt[len++] = 1;            rlen++;        }        long long res = Factorial(rlen);        for(int i = 0; i < len; ++i)            res /= Factorial(cnt[i]);        printf("%d %lld\n",rlen,res);    }    return 0;}