hdu 5895
2017-03-20 12:42
190 查看
#include <iostream> #include <cstdio> #include <string.h> #include <algorithm> #include <map> #include <queue> #include <stdlib.h> #include <cmath> #include <vector> #include <stack> #define clr(x) memset(x,0,sizeof(x)) #define clr2(x) memset(x,INF,sizeof(x)) #define clr3(x) memset(x,-INF,sizeof(x)) #define INF 0x3f3f3f3f #define MAXN 100010 #define MAXM 100010 #define pb(x) push_back(x) #define ll long long #define ull unsigned long long #define MAXS 100000010 using namespace std; struct Martix { ll a[3][3]; }; ll p; ll mul2(ll y, ll cnt); Martix mul(Martix a,Martix b) //¾ØÕó3Ë·¨ { Martix c; clr(c.a); for (int i=0;i<3;i++) for (int j=0;j<3;j++) for (int k=0;k<3;k++) { c.a[i][j] += ( a.a[i][k]*b.a[k][j] ) % p; c.a[i][j] %= p; } return c; } Martix solve_pow(Martix a,ll t) //¿ìËùÃY { Martix b; clr(b.a); for(int i=0;i<3;i++) b.a[i][i]=1; while(t>0) { if(t & 1) b=mul(b,a); a=mul(a,a); t >>= 1; } return b; } int euler(int n){ int res=n,a=n; for(int i=2;i*i<=a;i++){ if(a%i==0){ res=res/i*(i-1); while(a%i==0) a/=i; } } if(a>1) res=res/a*(a-1); return res; } ll quickmod(ll a,ll b,ll m) { ll ans = 1; while(b) { if(b&1) { ans = (ans*a)%m; b--; } b/=2; a = a*a%m; } return ans; } ll n,y,x,s; void solve() { scanf("%lld%lld%lld%lld",&n,&y,&x,&s); Martix base,ans; base.a[0][0]=5; base.a[0][1]=1; base.a[0][2]=0; base.a[1][0]=5; base.a[1][1]=0; base.a[1][2]=1; base.a[2][0]=-1; base.a[2][1]=0; base.a[2][2]=0; p=euler(s+1); ans=solve_pow(base,n*y-1); ll ex=ans.a[0][0]; ex+=p; ll res=quickmod(x,ex,s+1); printf("%lld\n",res); } int main() { int T; scanf("%d",&T); while (T--) solve(); return 0; }
相关文章推荐
- HDU 5895 欧拉定理+快速幂+公式
- HDU 5895 Mathematician QSC(矩阵快速幂+扩展欧拉定理)
- HDU 5895 Mathematician QSC
- Hdu 5895 Mathematician QSC
- HDU 5895 矩阵快速幂+欧拉降幂公式+指数循环节
- HDU 5895 Mathematician QSC(矩阵乘法+循环节降幂+除法取模小技巧+快速幂)——2016 ACM/ICPC Asia Regional Shenyang Online
- hdu 5895 Mathematician QSC 指数循环节+矩阵快速幂
- hdu 5895 (2016icpc亚洲区域赛青岛站D题 Lucky coins)
- hdu 5895(矩阵快速幂+欧拉函数)
- HDU 5895 Mathematician QSC
- HDU 5895 Mathematician QSC(逆元应用+矩阵快速幂+数论知识)——2016 ACM/ICPC Asia Regional Shenyang Online
- HDU 5895 Mathematician QSC
- hdu-5895 Mathematician QSC(数学)
- 2016 ACM/ICPC Asia Regional Shenyang Online HDU 5895 Mathematician QSC(矩阵快速幂+高次幂取模)★ ★
- HDU 5895 Mathematician QSC(矩阵乘法+循环节降幂+除法取模小技巧+快速幂)——2016 ACM/ICPC Asia Regional Shenyang Online
- HDU 5895 矩阵快速幂+欧拉函数
- HDU 5895 Mathematician QSC(欧拉定理推广)
- hdu 5895 Mathematician QSC(快速幂+指数循环节)
- HDU 5895 Mathematician QSC(矩阵乘法+循环节降幂+除法取模小技巧+快速幂)
- HDU 5895 Mathematician QSC (矩阵快速幂 + 逆元应用 + 指数循环节 + 欧拉函数)