結果
| 問題 |
No.2818 A Game I Play to Pass the Time
|
| コンテスト | |
| ユーザー |
vjudge1
|
| 提出日時 | 2025-09-30 12:00:58 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 670 ms / 2,000 ms |
| コード長 | 1,382 bytes |
| コンパイル時間 | 1,923 ms |
| コンパイル使用メモリ | 195,496 KB |
| 実行使用メモリ | 7,716 KB |
| 最終ジャッジ日時 | 2025-09-30 12:01:17 |
| 合計ジャッジ時間 | 17,828 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 19 |
ソースコード
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=998244353;
const int N=110;
int T,n,s,fst,inv[N];
int qpow(int a,int b)
{
int s=1,base=a;
while(b!=0)
{
if(b&1==1)
{
s*=base;
s%=mod;
}
base*=base;
base%=mod;
b>>=1;
}
return s;
}
int C(int x,int y)
{
// cout<<x<<" "<<y<<endl;
int s=1;
for(int i=x;i>x-y;i--)
{
s*=i%mod;
s%=mod;
}
for(int i=1;i<=y;i++)
{
s*=inv[i];
s%=mod;
}
return s;
}
int get(int x)
{
assert(x+s-2>=x);
return C(x+s-2,x);
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
for(int i=0;i<N;i++)
{
inv[i]=qpow(i,mod-2);
}
cin>>T;
while(T--)
{
cin>>n>>s;
fst=n;
int mul=1;
for(int i=2;i<=100;i++)
{
int num=0,sum=0;
while(n%i==0)
{
n/=i;
num++;
}
int cnt=1;
for(int j=0;j<=num;j++)
{
sum+=cnt%mod*get(num-j);
sum%=mod;
if(j!=num)
cnt*=i;
}
mul*=sum;
mul%=mod;
}
mul*=s%mod;
mul%=mod;
cout<<mul<<'\n';
}
return 0;
}
vjudge1