这个题,只要学了二分幂算法,就easy了。
用二进制的方法,当他是奇数的时候才乘ans上。。
#include<stdio.h> #define m 200907 __int64 power(__int64 a,__int64 b) { __int64 ans=1; a=a%m; while(b) { if(b%2) ans=ans*a%m; b=b/2; a=a*a%m; } return ans; } int main() { __int64 t,a,b,c,q,d,k,s,ans; scanf("%I64d",&t); while(t--) { scanf("%I64d%I64d%I64d%I64d",&a,&b,&c,&k); if(2*b==a+c) { d=b-a; s=a%m+(k-1)*d%m; printf("%I64d\n",s%m); } else if(b*b==c*a) { q=b/a; ans=a%m*power(q,k-1)%m; printf("%I64d\n",ans%m); } } return 0; }