据说用的啥快速幂~顺便提下外国语的...你懂的...
题目链接:点击打开链接
#include <iostream>
#include <cstdio>
#include <math.h>
using namespace std;
typedef long long LL;
LL a[5], n, MOD = 100007;
LL qpow(LL a, LL b)
{
LL r = 1, base = a;
while( b != 0 )
{
if( b & 1 )
r = (r * base) %MOD;
base = ( base % MOD) * (base%MOD);
b >>= 1;
}
return r;
}
int main ()
{
LL red1_2, red2_3;
LL rat1_2, rat2_3;
LL ans;
while (~scanf ("%lld%lld%lld%lld", &a[1], &a[2], &a[3], &n))
{
red1_2 = a[2] - a[1];
red2_3 = a[3] - a[2];
if (red1_2 == red2_3)
{
ans = a[1]%MOD + (((n-1) %MOD) * (red1_2%MOD))%MOD;
ans = ans % MOD;
}
else
{
rat1_2 = a[2]/a[1];
ans = ( ( a[1] %MOD ) * (qpow (rat1_2, n-1) % MOD ) );
}
printf ("%lld\n", ans);
}
return 0;
}