結果

問題 No.2896 Monotonic Prime Factors
ユーザー vjudge1vjudge1
提出日時 2024-09-27 00:39:11
言語 C++23(gcc13)
(gcc 13.2.0 + boost 1.83.0)
結果
AC  
実行時間 86 ms / 2,000 ms
コード長 1,227 bytes
コンパイル時間 6,250 ms
コンパイル使用メモリ 274,884 KB
実行使用メモリ 11,832 KB
最終ジャッジ日時 2024-09-27 00:39:21
合計ジャッジ時間 7,195 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 13 ms
11,244 KB
testcase_01 AC 13 ms
11,396 KB
testcase_02 AC 12 ms
11,392 KB
testcase_03 AC 13 ms
11,344 KB
testcase_04 AC 69 ms
11,316 KB
testcase_05 AC 70 ms
11,300 KB
testcase_06 AC 71 ms
11,268 KB
testcase_07 AC 59 ms
11,524 KB
testcase_08 AC 73 ms
11,464 KB
testcase_09 AC 69 ms
11,248 KB
testcase_10 AC 51 ms
11,676 KB
testcase_11 AC 21 ms
11,548 KB
testcase_12 AC 18 ms
11,516 KB
testcase_13 AC 55 ms
11,624 KB
testcase_14 AC 66 ms
11,576 KB
testcase_15 AC 15 ms
11,696 KB
testcase_16 AC 29 ms
11,644 KB
testcase_17 AC 21 ms
11,832 KB
testcase_18 AC 86 ms
11,736 KB
testcase_19 AC 23 ms
11,744 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
#define endl "\n"
#define i64 long long
const int M=2e6+10;
const int N=1e5+10;
const int mod=998244353;
int cnt[N];
int fac[M];
int factor(int x){
    if(cnt[x]!=0) return cnt[x];
    int res=0;
    int t=x;
    for(int i=2;1ll*i*i<=x;i++){
        if(x%i==0){
            while(x%i==0){
                x/=i;
                res++;
            }
        }
    }
    if(x!=1) res++;
    //cout<<t<<" "<<res<<endl;
    return cnt[t]=res;
}
int qpow(int a,int b){
     int res=1;
     while(b){
         if(b&1) res=1ll*res*a%mod;
         a=1ll*a*a%mod;
         b>>=1;
     }
     return res;
}
int C(int m ,int n){
    if(m>n) return 0;
    return 1ll*fac[n]*qpow(fac[n-m],mod-2)%mod*qpow(fac[m],mod-2)%mod;
}
void init(){
    fac[1]=fac[0]=1;
    for(int i=2;i<M;i++){
        fac[i]=1ll*fac[i-1]*i%mod;
    }
}
int x=1;
i64 n=0;
void solved(){
     int a,b;
     cin>>a>>b;
     //x=1ll*x*a%mod;
     //cout<<x<<endl;
     n=(n+factor(a))%mod;
     //cout<<b<<" "<<n<<endl;
     cout<<C(b-1,n-1)<<endl;

}
signed main(){
     ios::sync_with_stdio(false);
     cin.tie(0);
     cout.tie(0);
     int t=1;
     cin>>t;
     init();
     while(t--) solved();
}
0