LightOJ 1282 Leading and Trailing
来源:互联网 发布:java list 自定义排序 编辑:程序博客网 时间:2024/05/17 01:16
题意:给出n和k,求n^k的前三位和后三位
解题思路:快速幂. n^k=a.bc*10^m,abc就是前三位,两边同时取lg,lg n^k=lg(a.bc*10^m),k*lg n=lg(a.bc)+m,所以m就是k*lg n的整数部分,lg(a.bc)就是k*lg n的小数部分,令p=lg(a.bc)=k*lg n-m=k*lg n-(int)(k*lg n),所以a.bc=10^p,前三位abc=a.bc*100,后三位就用n^k mod 10^3求出,求后三位用快速幂,这里要注意求出的后三位如果不满三位的话要加前导0
这类快速幂的题前m位用lg来求,后m位就用n^k mod 10^m来求
代码:
#include <iostream>#include <algorithm>#include <cstring>#include <string>#include <cstdio>#include <cmath>using namespace std;typedef long long ll;ll mod_pow(ll x,ll n,ll mod){ ll res=1; while(n>0) { if(n&1)res=res*x%mod; x=x*x%mod; n>>=1; } return res;}int main(){ int t; int cnt=0; scanf("%d",&t); while(t--) { int n,k; scanf("%d%d",&n,&k); double p=k*log10(n)-(int)(k*log10(n)); p=pow(10,p); int x=p*100; int y=mod_pow(n,k,1000); printf("Case %d: %d %03d\n",++cnt,x,y); } return 0;}
阅读全文
0 0
- lightOJ 1282 Leading and Trailing
- LightOJ 1282 Leading and Trailing
- LightOJ 1282 Leading and Trailing
- lightoj 1282 Leading and Trailing
- Lightoj 1282 (Leading and Trailing)
- 【Lightoj 1282 Leading and Trailing】
- LightOJ 1282 Leading and Trailing
- LightOJ 1282 Leading and Trailing
- LightOJ 1282 Leading and Trailing
- LightOJ 1282 Leading and Trailing
- lightoj 1282 Leading and Trailing
- LightOJ 1282 Leading and Trailing
- lightoj Leading and Trailing
- Leading and Trailing LightOJ
- Leading and Trailing LightOJ
- Leading and Trailing LightOJ
- Leading and Trailing LightOJ
- lightoj 1282 - Leading and Trailing 【数学】
- 链表面试题之合并两个有序链表
- 给定区间[-2的31次方, 2的31次方]内的3个整数A、B和C,请判断A+B是否大于C。
- lintcode -- 转换字符串到整数
- linux初学者-用户管理篇
- (读书笔记)《玩着玩着就能成为PPT高手》——把握制作材料的大前提
- LightOJ 1282 Leading and Trailing
- JS原型对象和原型链
- 牛客客
- Hibernate(二)
- 折半查找(非递归与递归实现)
- 重写&重载
- 字符串内排序
- HP-UX的硬盘资源的逻辑卷管理
- 【死磕Java并发】-----J.U.C之阻塞队列:ArrayBlockingQueue