当前位置: 代码迷 >> 综合 >> HPU 1049 (简单快速幂)
  详细解决方案

HPU 1049 (简单快速幂)

热度:93   发布时间:2023-10-13 21:42:28.0

1049: QAQ的公式求解(一)

时间限制: 1 Sec   内存限制: 128 MB
提交: 113   解决: 51
[提交][状态][讨论版]

题目描述

QAQ给定一个小公式,即:f[i]=f[i?1]?xf[i]=f[i?1]?xi>=2i>=2)。他想知道f[n]f[n]的结果。

输入

第一行输入一个整数TT,代表有TT组测试数据。

每组数据输入三个整数f[1]xnf[1]、x、n,分别代表上面提到的信息。


注:1<=T<=100001<=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;
}