1 #include<stdio.h> 2 #define e 200907 3 int main() 4 { 5 __int64 a,b,c,n,ans; 6 int t; 7 scanf("%d",&t); 8 while(t--) 9 { 10 scanf("%I64d%I64d%I64d%I64d",&a,&b,&c,&n); 11 if(n==1) 12 { 13 printf("%I64d ",a%e); 14 continue; 15 } 16 if(b-a==c-b) 17 { 18 ans=(a%e+((n-1)%e*(b-a)%e)%e)%e; 19 } 20 else 21 { 22 __int64 d; 23 d=(b/a)%e; 24 a=a%e; 25 n--; 26 __int64 x=n; 27 __int64 tt=2; 28 __int64 temp=d; 29 while(x>0) 30 { 31 while(tt<x) 32 { 33 temp=(temp*temp)%e; 34 tt=tt*2; 35 } 36 a=(a*temp)%e; 37 x-=tt/2; 38 tt=2; 39 temp=d; 40 } 41 ans=a; 42 } 43 printf("%I64d ",ans); 44 } 45 return 0; 46 }
1 #include<stdio.h> 2 #define e 200907 3 __int64 fun(__int64 a,__int64 b) 4 { 5 __int64 temp=1; 6 a=a%e; 7 while(b>0) 8 { 9 if(b%2!=0) 10 temp=(a*temp)%e; 11 a=(a*a)%e; 12 b=b/2; 13 14 } 15 return temp; 16 } 17 int main() 18 { 19 __int64 a,b,c,n,ans; 20 int t; 21 scanf("%d",&t); 22 while(t--) 23 { 24 scanf("%I64d%I64d%I64d%I64d",&a,&b,&c,&n); 25 if(b-a==c-b) 26 { 27 ans=(a%e+((n-1)%e*(b-a)%e)%e)%e; 28 } 29 else 30 { 31 n--; 32 ans=(a%e)*fun(b/a,n); 33 } 34 printf("%I64d ",ans%e); 35 } 36 return 0; 37 }