崩盘了……单调栈写不出来,拉倒(此为赛后第一时间的感想)
行吧。本场的题都很困难,也就只有两道签到题有点意思,别的实在是鸡肋……
这个页面不太想写了,因为太难的题罗列上来对能力提高也没什么帮助。
两道签到题,有趣的F题题解已经写在周报里了。B题只是用到了快速幂(不用也罢)和线性筛,代码如下:
#include<stdio.h> #define MOD 1000000007 int prime[1000010]={0}; int f[1000010]={0}; void init() { int i; for(i=2;i<=1000005;++i) { if(!prime[i]) { prime[++prime[0]]=i; f[i]=1; } int j; for(j=1;j<=prime[0];j++) { if(i*prime[j]>1000005) { break; } prime[i*prime[j]]=1; f[i*prime[j]]=f[i]+1; if(i%prime[j]==0) { break; } } } return; } long long QPow(long long bas,long long t) { long long ret=1; for(;t;t>>=1,bas=(bas*bas)%MOD) { if(t&1LL) { ret=(ret*bas)%MOD; } } return ret; } int main() { int t; scanf("%d",&t); init(); while(t--) { long long x,c; scanf("%lld%lld",&x,&c); long long ans=0; long long tmp=QPow(c,(long long)f[x]); printf("%lld\n",tmp); } return 0; }
那本题解就到这里吧。