1049: QAQ的公式求解(一)
时间限制: 1 Sec 内存限制: 128 MB提交: 113 解决: 51
[提交][状态][讨论版]
题目描述
QAQ给定一个小公式,即:f[i]=f[i?1]?xf[i]=f[i?1]?x(i>=2i>=2)。他想知道f[n]f[n]的结果。
输入
第一行输入一个整数TT,代表有TT组测试数据。
每组数据输入三个整数f[1]、x、nf[1]、x、n,分别代表上面提到的信息。
注:1<=T<=10000,1<=f[1],x,n<=1091<=T<=10000,1<=f[1],x,n<=109。
输出
对每组测试数据,输出一个整数代表最后的结果。
由于结果很大,请对109+7109+7取余。
样例输入
3
1 1 1
4 5 6
7 8 9
样例输出
1
12500
117440512
提示
来源
CZY
代码:
#include<stdio.h>
#include<math.h>
#define MOD 1000000007//不能写成1000000000+7,会出错;
long long quick_pow(long long x,long long b)
{long long ans=1,base=x;while(b){if(b&1){ans=(ans*base)%MOD;}base=(base*base)%MOD;b>>=1;}return ans;
}
int main()
{int t;long long n,k,x;scanf("%d",&t);while(t--){long long ans1=0,ans2;scanf("%lld%lld%lld",&k,&x,&n);ans1=quick_pow(x,n-1);ans2=ans1*k%MOD;printf("%lld\n",ans2);}return 0;
}