[语言月赛 202403] 传染病
题目背景
新型病毒正在肆虐洛谷。
题目描述
91-DIVOC 正在广泛传播,珂学家 RyanLi 想要探究 91-DIVOC 的传染系数。
第一天有 a a a 个人被 91-DIVOC 感染,从第二天起,每个感染者都会向 q q q 个没有感染的人传播 91-DIVOC,使他们变为感染者。
举个例子,如果第一天有 3 3 3 人被感染,每个感染者每天向 2 2 2 个人传播病毒,那么第二天会有 3 × 2 3 \times 2 3×2 个人被感染。第三天会有 3 × 2 × 2 3\times 2\times 2 3×2×2 个人被感染 ⋯ \cdots ⋯ 以此类推。
定义传染系数为每天被感染 91-DIVOC 的人数的乘积,RyanLi 需要你求出 k k k 天内的传染系数。由于这个数很大,你只需要输出它对 722733748 722733748 722733748 取模的结果。
输入格式
输入一行三个整数 k , a , q k,a,q k,a,q。
输出格式
输出一行一个整数,表示答案。
样例 #1
样例输入 #1
3 3 2
样例输出 #1
216
提示说明
数据规模与约定
对于
20
%
20\%
20% 的数据,
k
≤
7
k \leq 7
k≤7,
a
=
2
a=2
a=2,
q
=
2
q=2
q=2。
对于
50
%
50\%
50% 的数据,
k
≤
1
0
3
k \leq 10^3
k≤103。
对于
100
%
100\%
100% 的数据,
1
≤
k
≤
1
0
6
1 \leq k \leq 10^6
1≤k≤106,
1
≤
a
,
q
<
722733748
1 \leq a,q < 722733748
1≤a,q<722733748。
代码内容
// #include <iostream>
// #include <algorithm>
// #include <cstring>
// #include <stack>//栈
// #include <deque>//队列
// #include <queue>//堆/优先队列
// #include <map>//映射
// #include <unordered_map>//哈希表
// #include <vector>//容器,存数组的数,表数组的长度
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll p=722733748;
int main()
{
ll k,a,q;
cin>>k>>a>>q;
k--;
ll res,ans;
res=ans=a;
while(k--)
{
res*=q;
res%=p;
ans*=res;
ans%=p;
}
cout<<ans<<endl;
return 0;
}