数的快速幂,递归与非递归版,n^k的前三位,数学算。。
#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
int mod=1000;
int f(int x,int k)
{
if(k==0) return 1;
int res=1;
while(k)
{
if(k&1) res=res*x%mod;
x=x*x%mod;
k=k>>1;
}
return res;
}
LL dfs(int x,int k)
{
if(k==0) return 1;
int temp=dfs(x,k>>1)%mod;
if(k&1) return temp*temp*x%mod;
return temp*temp%mod;
}
int solve(int n,int k)
{
return pow(10.0,k*log10(n)-(LL)(k*log10(n))+2);
}
int main()
{
//int x=12345;
//printf("%lld %lld\n",12345*12345,x*x); // ?_?
int t,kase=1;
scanf("%d", &t);
while(t--)
{
int n,k;
scanf("%d%d", &n,&k);
printf("Case %d: %d %03d\n",kase++,solve(n,k),dfs(n%mod,k)); //%03d坑点
}
return 0;
}
快速幂+求值
最新推荐文章于 2024-04-30 14:49:10 发布