Leading and Trailing(数论基础)
来源:互联网 发布:底层软件开发工程师 编辑:程序博客网 时间:2024/05/16 14:54
题目来源:https://vjudge.net/problem/LightOJ-1282
【题意】
求一个数n的k次方后的前三位与后三位。并且后三位要求控制格式。
【思路】
灵活使用log函数。
说一下这里是怎样使用log10函数的:
假设p=3.3254,那么10^p==2115.436532
而10^(p-3)==2.115437。
也就是说,p在这里是10的次幂,10^p代表一个数x,那么p的整数部分指的是x的小数点位置(可以这么理解),而小数部分代表的是x的值(当然小数点位置不一样)。
依照这个办法,将一个数使用double类型表示(通过log10函数),然后将小数部分进行pow函数得到一个值,那么前三位的话,只需要乘以100取整就可以了。
【代码】
#include<map>#include<stack>#include<queue>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<iostream>#include<string>#define mem(a,b) memset(a,b,sizeof(a))using namespace std;const int INF=1e9;typedef long long LL;int quick_pow(int a,int b){ int ans=1,base=a%1000; while(b) { if(b&1) { ans=(ans*base)%1000; } base=(base*base)%1000; b>>=1; } return ans;}int main(){ int T,cases=1; scanf("%d",&T); while(T--) { int n,k; scanf("%d%d",&n,&k); double a=(double)k*log10(n*1.0); a=a-(int)a; double p=pow(10.0,a); int q=quick_pow(n,k); printf("Case %d: %d %03d\n",cases++,(int)(p*100.0),q); }}
0 0
- Leading and Trailing(数论基础)
- lightoj1282:Leading and Trailing(数论)
- LOJ1282 Leading and Trailing(数论)
- 【LightOJ】1282 - Leading and Trailing(快速幂 & 数论)
- 【Light-oj】-1282 - Leading and Trailing(数论,快速幂,log,好)
- LightOJ - 1282Leading and Trailing (快速幂简单数论求幂数前几位)
- lightoj1282 - Leading and Trailing(水题)
- Lightoj1282(HDOJ1060) - Leading and Trailing
- 11029 - Leading and Trailing
- Leading and Trailing
- Leading and Trailing
- uva11029 - Leading and Trailing
- lightoj1282 - Leading and Trailing
- 1282 - Leading and Trailing
- lightoj Leading and Trailing
- Leading and Trailing [数学]
- Leading and Trailing LightOJ
- Leading and Trailing
- 4种创建对象的方法
- SVN出现红色叹号(!)
- dispaly的值及它们的作用
- 处理大并发之一 对异步非阻塞的理解
- 乐驾项目博客-1
- Leading and Trailing(数论基础)
- 一天一个算法: 随机洗牌算法
- spring mvc 406 (Not Acceptable)
- C# Winform使用线程,委托定时更新界面UI控件,解决界面卡顿问题
- 乐驾项目博客-2
- Java 内存模型
- Navigation View的使用
- jQ多库共存及常见插件及jq,ui
- 给鼠标右键添加选项