__int64 pow_mod (__int64 a, __int64 n, __int64 m)快速冪取模函數。php
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4047 Accepted Submission(s): 1243
函數
#include<stdio.h> #include<string.h> #define MOD 200907 __int64 pow_mod (__int64 a, __int64 n, __int64 m) { if(n==0) return 1%m; if(n==1) return a%m; __int64 x=pow_mod(a,n/2,m); __int64 ans=x*x%m; if(n%2==1) ans=ans*a%m; return ans; } int main() { double a,b,c; int t; int k; scanf("%d",&t); while(t--) { scanf("%lf%lf%lf%d",&a,&b,&c,&k); if(a+c==2*b) { __int64 a1=(__int64 )a; __int64 d=(__int64 )(b-a); int ans=(a1%MOD+((k-1)%MOD)*(d%MOD))%MOD; printf("%d\n",ans); } else { __int64 a1=(__int64)a; __int64 t1=(__int64)(a1%MOD); double q1=(b/a); __int64 q2=(__int64)q1; __int64 q=(__int64)q2; __int64 tmp=pow_mod(q,k-1,MOD); int ans=(t1*tmp)%MOD; printf("%d\n",ans); } } return 0; }