UVa:11029 Leading and Trailing
2013-12-16 12:30
141 查看
后三位好想,只要对1000取余只用后三位进行乘方即可。
前三位可能难想点,转换成几点几,然后再乘方取前三位即可。
但是k比较大,会超时。所以用快速幂运算。
前三位可能难想点,转换成几点几,然后再乘方取前三位即可。
但是k比较大,会超时。所以用快速幂运算。
#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> using namespace std; double Convers(double val) { while(val>=1000) val=val/10; return val; } void quickpow(double a,int b,int k,double &fro,int &rear) { fro=1.0; rear=1; while(k) { if(k&1) { fro*=a; fro=Convers(fro); rear=rear*b%1000; } a*=a; a=Convers(a); b=b*b%1000; k=k>>1; } } int main() { int T; scanf("%d",&T); while(T--) { int n,k; scanf("%d%d",&n,&k); double v; int u; quickpow(Convers(n),n%1000,k,v,u); printf("%d...%03d\n",(int)v,u%1000); } return 0; }
相关文章推荐
- UVA-11029 Leading and Trailing
- UVA 11029 Leading and Trailing
- UVA - 11029 Leading and Trailing
- UVA - 11029 Leading and Trailing
- UVA 11029 Leading and Trailing
- uva 11029 - Leading and Trailing
- UVA 11029 Leading and Trailing [数学]
- UVa 11029 - Leading and Trailing 求n^k的前3位
- UVA 11029 Leading and Trailing
- UVA 11029 Leading and Trailing
- UVA 11029 Leading and Trailing
- UVa 11029 Leading and Trailing (如何计算n^k的开头三位和末尾三位?)
- UVa 11029 - Leading and Trailing 求n^k的前3位
- uva 11029 Leading and Trailing(求n^k的前几位和后几位 证明)
- Uva 11029 – Leading and Trailing(快速幂取模,log(x)的应用)
- uva 11029 Leading and Trailing
- UVA 11029 - Leading and Trailing
- 【uva】11029 Leading and Trailing
- uva 11029 Leading and Trailing
- uva11029 - Leading and Trailing