Uva 11029 Leading and Trailing (求n^k前3位和后3位)

题意:给你 n 和 k ,让你求 n^k 的前三位和后三位

思路:后三位很简单,直接快速幂就好,重点在于如何求前三位,注意前导0

资料:求n^k的前m位 博客连接地址

代码:

#include <iostream>
#include <cmath>
#include <cstdio>
#include <algorithm>
#define ll long long
using namespace std; ll qmod(ll a,ll b,ll mod)
{
ll ans=;
while(b)
{
if(b%)
{
ans=(ans*a)%mod;
}
b=b/;
a=(a*a)%mod;
}
return ans;
} int main()
{
int t;
cin>>t;
while(t--)
{
ll n,k;
scanf("%lld %lld",&n,&k);
double a=k*log10((double)n);
a=a-floor(a);
double ans1 = pow(,a)*;
ll ans2 = qmod(n,k,);
cout<<(ll)ans1<<"...";
printf("%03lld\n",ans2);
}
return ;
}
上一篇:GDB程序调试


下一篇:[重要] Django 多条件多表查询实例问题