求a^b前n位和后n位
求解a^b后n位就不说了,直接用快速幂就行了;
主要讲的是a^b前n位:在网上看了题解才有点明白
m=n^n;两边同取对数,得到,log10(m)=n*log10(n);再得到,m=10^(n*log10(n));
然后,对于10的整数次幂,第一位是1,所以,第一位数取决于n*log10(n)的小数部分
总之,log很强大啊,在求一个数的位数上,在将大整数化成范围内的整数上,在指数问题上
对于一个>=1的正整数m,10^(log10(m)-(int)log10(m))这个值,是原值m的1/k,k=1,10,100,1000...
为什么呢,看下面:
m=375,375=10^2.5740312677277188
对于一个>=1的正整数m,我们假设m=10^(a+b),a为指数的整数部分,b为指数的小数部分
(对比上面,如果m=375,那么a=2,b=0.5740312677277188)
则log10(m)-(int)log10(m)=(a+b)-a=b; 那么10^b是什么东西呢?
对于任意数m,m=10^(a+b)=10^a*10^b,显然10^a={1,10,100,1000,10000...};
也就说,10^(b的小数部分)最终将直接影响最左边的N位数。将这个结果乘以1,就是前1位的答案,乘以10,就是前2位的答案。。。类推
#include<iostream>
#include<cmath>
using namespace std;
int pow(int a,int k) //后3位数的快速幂算法
{ int ans=1; a%=1000; while(k) { if(k&1) { ans=ans*a; ans%=1000; } a=a*a; a%=1000; k>>=1; } return ans;
}
int main()
{ __int64 c; double a,b; int n,m,t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); a=m*log10(0.0+n); c=(__int64)a; //整数部分 b=a-c; //小数部分 c=(__int64)(pow(10.0,b)*100); //结果乘以100,也就意味着是前3位 printf("%I64d...%03d\n",c,pow(n,m)); } return 0;
}
求a^b前n位和后n位相关推荐
- JS实现身份证号显示前3位和后4位,中间用***替代
// 想要保留多少位,直接给对应的变量的赋值即可// 此处是保留前三位和后四位 const hiddenCardId = (str,frontLen = 3,endLen = 4) => { / ...
- js字符串截取前几位或者后几位的方法
1.截取前五位 var string='除了春天爱情和樱花'; var newstring= string.substring(0,5); console.log(newstring); // 除了春 ...
- java16进制取前几位_16位16进制数怎么取前8位和后8位
展开全部 我用C语言来回答这个问题.16位就是一个2字节整636f707962616964757a686964616f31333433633530数. unsigned short hex=0x123 ...
- ACM_求N^N的前5位数和后5位数(数论)
NNNNN Time Limit: 2000/1000ms (Java/Others) Problem Description: 对于整数N,求N^N的前5位和后5位(1057题加强版) Input: ...
- 数组的最后一位的下一位为什么是0?
以下是我做的两个实验,加证实了数组的最后一位的后一位是0,只应该是系统自动添加的标志位 1.比如 int a[5] 则a[5]=0,这个是什么原因我还没有搞懂 #include<iostream ...
- 快速幂算法c语言求a的n次方,快速幂运算模板(求n^k以及前几位或后几位)
计算n^k的结果 步骤: 1.把n由十进制转换为二进制,按二进制来计算(最后结果还是一样的) 2.把n由二进制转换为2^k相加的形式 先举个例子: 求5^22: 接着就可以很好地理解了 O(logn) ...
- k次方 求1个数的n次方的前三位数和后三位数
K次方 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total Submissio ...
- 抓交通肇事犯。一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同; 丙是数学家
抓交通肇事犯.一辆卡车违反交通规则,撞人后逃跑.现场有三人目击事件,但都没有记住车号,只记下车号的一些特征.甲说:牌照的前两位数字是相同的:乙说:牌照的后两位数字是相同的,但与前两位不同: 丙是数学家 ...
- 设计科目类Subject,其类的实例表示大学课程科目。一门课程包含课程名(String)、课程编码(code)为六位字符串,前三位字符为字母代表学科领域,后三位字符为数字,课程编码是唯一的。
求大神帮忙写一个变成 带注释的 我实在是没整明白!! 救救孩子吧 孩子可着急了! 设计科目类Subject,其类的实例表示大学课程科目.一门课程包含课程名(String).课程编码(code)为六位字 ...
最新文章
- 家长不知道孩子在学校学的咋样,怎么能得行?
- 《Adobe Illustrator CC 2014中文版经典教程(彩色版)》—第1课0.15节创建剪切蒙版...
- Activity采用栈式管理的理解
- python全栈 互联网协议
- 如何加快Json 序列化?有哪些方法?
- Flask学习 一 基本结构
- java 类图 xmind_轻松学习UML之类图,状态图
- 利用边缘监督信息加速Mask R-CNN实例分割训练
- [MSSQL]也说SQL中显示星期几函数
- 如何在centos7上安装源码包
- 中兴服务器 raid,中兴LIS等直通阵列卡卡硬盘检测工具
- linux服务器测网速,linux服务器如何测试网速?
- python--字符串
- 使用MediaPlayer的一些常见报错及解决方法-1
- RISC-V矢量指令集学习记录
- 源代码静态检测分析技术浅析
- mdpi的手机_APP设计尺寸
- AllenBradley罗克韦尔CIP通信协议介绍 C# AllenBradley(CIP)读写操作PLC数据 C#罗克韦尔(CIP)PLC通信
- 简历 解析 技术总结
- 熬夜肝了这篇Spring Cloud Gateway的功能及综合使用