WA的一个点我输出了0,期望输出为1
查看原帖
WA的一个点我输出了0,期望输出为1
833124
BIOS楼主2024/5/8 14:29
#include<iostream>
using namespace std;
#define int long long
const int N=12;
int n,m,k,t,c[N][N];
int solve()
{
    int cnt=0,tmp=0;
    for(int i=2;i<=n/i;i++)
        if(n%i==0)
        {
            cnt++;
            while(n%i==0)
                n/=i,tmp++;
        }
    if(n>1)
        cnt++,tmp++;
    if(cnt<k || cnt<tmp)
        return 0;
    return c[cnt-1][k-1];
}
signed main()
{
    for(int i=0;i<N;i++)
        for(int j=0;j<=i;j++)
            if(!j)
                c[i][j]=1;
            else
                c[i][j]=c[i-1][j]+c[i-1][j-1];
    cin>>t;
    while(t--)
        scanf("%lld%lld",&n,&k),printf("%lld\n",solve());
}

思路感觉没问题,质因子拆解出来必须指数为1,而且这些质因子最多也不到10个,long long没爆,我只有质因子个数少于k或者存在指数大于1的质因子才会返回0

2024/5/8 14:29
加载中...