結果

問題 No.2818 A Game I Play to Pass the Time
コンテスト
ユーザー vjudge1
提出日時 2025-10-16 20:59:37
言語 C++14
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 1,140 bytes
コンパイル時間 1,360 ms
コンパイル使用メモリ 163,404 KB
実行使用メモリ 9,964 KB
最終ジャッジ日時 2025-10-16 20:59:50
合計ジャッジ時間 12,667 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other WA * 19
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=998244353;
const int N=1e6+10;
const int pri[30]={0,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
int n,p[N],k[N],m,s,inv[N];
int Pow(int a,int b=mod-2){
    int s=1;
    while(b){
        if(b&1)s=s*a%mod;
        a=a*a%mod;b>>=1;
    }
    return s;
}
int C[N];
void solve(){
    cin>>n>>s;m=0;
    int x=n;
    for(int i=1;i<=25;++i)if(x%pri[i]==0){
        p[++m]=pri[i];while(x%pri[i]==0)++k[m],x/=pri[i];
    }
    int ans=1;
    C[0]=1;

    for(int i=0;i<60;++i)C[i+1]=C[i]*(s-2+i+1)%mod*inv[i+1]%mod;
    for(int i=1;i<=m;++i){
        int val=0;
        for(int j=0;j<=k[i];++j){
            val=(val+Pow(p[i],k[i]-j)%mod*C[j]%mod)%mod;
        }
        ans=ans*val%mod;
    }
    ans=ans*(s%mod)%mod;
    cout<<ans<<'\n';
    for(int i=1;i<=m;++i)k[i]=p[i]=0;
    return ;
}
signed main(){
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    inv[1]=1;
    for(int i=2;i<=60;++i)inv[i]=(mod-mod/i)*inv[mod%i]%mod;
    int T;cin>>T;while(T--)solve();
    return 0;
}
/* 
1
897612484786617600 1000000000000000000
*/
0