http://acm.hdu.edu.cn/showproblem.php?pid=3944
思路看https://blog.csdn.net/clover_hxy/article/details/55101759
这题逆元用的时候再算300+ms,如果提前全部预处理好,就3000+ms超时了。
还要注意开数组不要1w*1w,因为1w以内的素数只有1200+个,节省空间。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int n,m,p,Case;
int idx[10000+100],prime[1500],fac[10000+100][1500],inv[10000+100][1500];
bool vis[10000+100];
int pow_mod(int a,int n,int m)
{
if(!n)return 1;
int x=pow_mod(a,n/2,m);
ll ans=(ll)x*x%m;
if(n&1)ans=ans*a%m;
return (int)ans;
}
void init()
{
for(int i&