题目地址:http://acm.sgu.ru/problem.php?contest=0&problem=261
小结:涉及到测试法求元根、线性方程求解、离散对数问题,是数论里代码多的问题,但是基本上就是个模板题。
#include<map>
#include<cstdio>
#include<cmath>
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
vector<ll>f,as;
ll pow(ll a,ll b,ll mod){ //快速幂
ll as=1;
while(b){
if(b&1) as=(as*a)%mod;
a=(a*a)%mod; b>>=1;
}
return as;
}
bool g_test(ll g,ll p){ //元根测试函数
for(ll i=0;i<f.size();i++)
if(pow(g,(p-1)/f[i],p)==1)
return 0;
return 1;
}
ll y