求解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位相关推荐

  1. JS实现身份证号显示前3位和后4位,中间用***替代

    // 想要保留多少位,直接给对应的变量的赋值即可// 此处是保留前三位和后四位 const hiddenCardId = (str,frontLen = 3,endLen = 4) => { / ...

  2. js字符串截取前几位或者后几位的方法

    1.截取前五位 var string='除了春天爱情和樱花'; var newstring= string.substring(0,5); console.log(newstring); // 除了春 ...

  3. java16进制取前几位_16位16进制数怎么取前8位和后8位

    展开全部 我用C语言来回答这个问题.16位就是一个2字节整636f707962616964757a686964616f31333433633530数. unsigned short hex=0x123 ...

  4. ACM_求N^N的前5位数和后5位数(数论)

    NNNNN Time Limit: 2000/1000ms (Java/Others) Problem Description: 对于整数N,求N^N的前5位和后5位(1057题加强版) Input: ...

  5. 数组的最后一位的下一位为什么是0?

    以下是我做的两个实验,加证实了数组的最后一位的后一位是0,只应该是系统自动添加的标志位 1.比如 int a[5] 则a[5]=0,这个是什么原因我还没有搞懂 #include<iostream ...

  6. 快速幂算法c语言求a的n次方,快速幂运算模板(求n^k以及前几位或后几位)

    计算n^k的结果 步骤: 1.把n由十进制转换为二进制,按二进制来计算(最后结果还是一样的) 2.把n由二进制转换为2^k相加的形式 先举个例子: 求5^22: 接着就可以很好地理解了 O(logn) ...

  7. k次方 求1个数的n次方的前三位数和后三位数

    K次方 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submissio ...

  8. 抓交通肇事犯。一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同; 丙是数学家

    抓交通肇事犯.一辆卡车违反交通规则,撞人后逃跑.现场有三人目击事件,但都没有记住车号,只记下车号的一些特征.甲说:牌照的前两位数字是相同的:乙说:牌照的后两位数字是相同的,但与前两位不同: 丙是数学家 ...

  9. 设计科目类Subject,其类的实例表示大学课程科目。一门课程包含课程名(String)、课程编码(code)为六位字符串,前三位字符为字母代表学科领域,后三位字符为数字,课程编码是唯一的。

    求大神帮忙写一个变成 带注释的 我实在是没整明白!! 救救孩子吧 孩子可着急了! 设计科目类Subject,其类的实例表示大学课程科目.一门课程包含课程名(String).课程编码(code)为六位字 ...

最新文章

  1. 家长不知道孩子在学校学的咋样,怎么能得行?
  2. 《Adobe Illustrator CC 2014中文版经典教程(彩色版)》—第1课0.15节创建剪切蒙版...
  3. Activity采用栈式管理的理解
  4. python全栈 互联网协议
  5. 如何加快Json 序列化?有哪些方法?
  6. Flask学习 一 基本结构
  7. java 类图 xmind_轻松学习UML之类图,状态图
  8. 利用边缘监督信息加速Mask R-CNN实例分割训练
  9. [MSSQL]也说SQL中显示星期几函数
  10. 如何在centos7上安装源码包
  11. 中兴服务器 raid,中兴LIS等直通阵列卡卡硬盘检测工具
  12. linux服务器测网速,linux服务器如何测试网速?
  13. python--字符串
  14. 使用MediaPlayer的一些常见报错及解决方法-1
  15. RISC-V矢量指令集学习记录
  16. 源代码静态检测分析技术浅析
  17. mdpi的手机_APP设计尺寸
  18. AllenBradley罗克韦尔CIP通信协议介绍 C# AllenBradley(CIP)读写操作PLC数据 C#罗克韦尔(CIP)PLC通信
  19. 简历 解析 技术总结
  20. 熬夜肝了这篇Spring Cloud Gateway的功能及综合使用

热门文章

  1. 视频 + PPT | 数字化运营,从理论到实践
  2. 赋能数字化财富管理转型,神策数据推出全新证券行业解决方案
  3. 前端工程师必须知道的vue前端面试题目汇总
  4. Unity3d(U3D) Windows/Android/IOS 播放rtmp/rtsp方案
  5. 看我如何跨虚拟机实现Row Hammer攻击和权限提升
  6. Storm累计求和Demo并且在集群上运行
  7. Java的日期API真烂
  8. HDU 3788 ZOJ问题
  9. pthread属性使用(转)
  10. VC++中 PostMessage和SendMessage的区别