题意
给出两个数n和k
求出 的前三位和后三位

思路:
先考虑 的后三位我,们在求后三位的时候,只需要快速幂计算 并且对100取模即可
再来考虑前三位任何一个数都能写成nk=10x∗10y其中x为整数部分、y为小数部分那我们考虑x和y分别是什么含义10的x整数次幂就是1后面0的个数,相当于存着的长度部分,10y=nk10x就相当于存着的数值部分换句话说nk总共x+1位,10x∗10y是nk的前x+1项,那么我们求nk的前3项只需要求102∗10y即可再来考虑 前三位\\ 任何一个数都能写成 n^k=10^{x}*10^y \\ 其中 x为整数部分、 y为小数部分\\ 那我们考虑x 和y 分别是什么含义 \\ 10的x整数次幂就是1后面0的个数, 相当于存着 的长度部分,\\ 10^y= \frac{n^k}{10^x} 就相当于存着 的数值部分\\ 换句话说 n^k总共x+1 位,10^x * 10^y 是n^k 的前x+1 项,\\ 那么我们求n^k 的前3项只需要求10^2*10^y 即可再来考虑前三位任何一个数都能写成nk=10x∗10y其中x为整数部分、y为小数部分那我们考虑x和y分别是什么含义10的x整数次幂就是1后面0的个数,相当于存着的长度部分,10y=10xnk​就相当于存着的数值部分换句话说nk总共x+1位,10x∗10y是nk的前x+1项,那么我们求nk的前3项只需要求102∗10y即可

算法:那么我们要如何求呢
nk很大不可能直接对其求,那么我们由lg⁡n=x+y所以nk=10(x+y)k=10kx+ky所以对上边的(x+y)∗k就得到了(这里可能有的人转不过来来,要明确我们找的就是k(x+y),前边求出了x+y,那么乘k就可以了不过我们想要的是y那么只需要k(x+y)−[k(x+y]就好[]是下取整。n^k 很大不可能直接对其求,那么我们由\\ \lg n = x+y 所以\\ n^k=10^{(x+y)^k=10^{kx+ky}}\\所以对上边的 (x+y)*k 就得到了\\(这里可能有的人转不过来来,要明确我们找的就是k(x+y),\\前边求出了x+y,那么乘k就可以了\\不过我们想要的是 y\\那么只需要 k (x+y) - [ k(x+y] 就好 [ ]是下取整。 nk很大不可能直接对其求,那么我们由lgn=x+y所以nk=10(x+y)k=10kx+ky所以对上边的(x+y)∗k就得到了(这里可能有的人转不过来来,要明确我们找的就是k(x+y),前边求出了x+y,那么乘k就可以了不过我们想要的是y那么只需要k(x+y)−[k(x+y]就好[]是下取整。

AC 代码:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<string>
#include<queue>
#include<map>
#include<set>
#include<ctime>
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
#define max 2000
#define mod 1000ll pow_mod(ll a, ll i) //快速幂
{if (i == 0) //递归终止条件return 1 % mod;ll temp = pow_mod(a, i >> 1);temp = temp * temp % mod;if (i & 1) //是奇数temp = (ll)temp * a % mod;return temp;
}int main()
{ll t;while (cin >> t){for (ll i = 1; i <= t; ++i){ll n,k;cin >> n>>k;ll after = pow_mod(n, k); //后三位ll count = 0, temp = n;double ret = log10(n*1.0); //求对数 *1.0 确保精度ret *= (double)k;ret = ret - (int)ret; //取整数部分//cout << ret << endl;cout << "Case " << i << ": " << (int)((pow(10, ret)) * 100) << " ";printf("%03lld\n", after);}}return 0;
}

快速幂可以参考该文章:
快速幂

Leading and Trailing(数论题)相关推荐

  1. UVA11029 Leading and Trailing【快速模幂+数学】

    Apart from the novice programmers, all others know that you can't exactly represent numbers raised t ...

  2. 数据范围BZOJ 3209(花神的数论题-数位统计+1,被数据范围坑了)

    PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘.目前又不当COO,还是得用心记代码哦! 3209: 花神的数论题 Time Limit: 10 Sec Memory ...

  3. [XSY] 简单的数论题(数学、构造)

    简单的数论题 m(a3+b3)=n(c3+d3)m(a^3+b^3)=n(c^3+d^3)m(a3+b3)=n(c3+d3) 考虑因式分解(a3+b3),(c3+d3):考虑因式分解(a^3+b^3) ...

  4. uva11029 - Leading and Trailing

    11029 - Leading and Trailing Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=c ...

  5. [数位dp] bzoj 3209 花神的数论题

    [数位dp] bzoj 3209 花神的数论题 题意:中文题. 思路:和普通数位dp一样,这里转换成二进制,然后记录有几个一. 统计的时候乘起来就好了. 代码: #include"cstdl ...

  6. bzoj3209:3209: 花神的数论题

    觉得还是数位dp的那种解题形式但是没有认真的想,一下子就看题解.其实还是设置状态转移.一定要多思考啊 f[i][j]=f[i-1][j]+g[i-1][j] g[i][j]=f[i-1][j-1]+g ...

  7. bzoj 3209: 花神的数论题 喵哈哈村的秘境探险(四)

    3209: 花神的数论题 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 2169  Solved: 1006 [Submit][Status][Di ...

  8. 球的表面积(数论题)

    牛客小白月赛20 C 球的表面积 题目链接 算法分析 这题是个纯数论题,首先我们知道外离和内含的状态是好求的, 难点在相交,相交需要减去两个互相融入的部分,以相交面为切面 那么第一个球融入第二个球的部 ...

  9. 【2020.10.31 洛谷团队赛 普及组】T2 U138180 神仙数论题

    题目背景 众所周知,ax≡b(modp)a^x≡b(modp)ax≡b(modp) 和 xa≡b(modp)x^a ≡b(modp)xa≡b(modp) 都可以在较为优秀的时间复杂度内求解. Quan ...

  10. 2021-06-27 记录最近刷过的数论题(整除分块,MillerRabin素性检测,积性函数,重数)

    记录一下最近刷过的数论题 文章目录 LOJ 143. 质数判定 AcWing 197. 阶乘分解 AcWing 199. 余数求和 LOJ #124. 除数函数求和 1 LOJ #125. 除数函数求 ...

最新文章

  1. 用C#去除代码的SourceSafe管理
  2. 中国首次实现量子优越性!比谷歌突破更厉害,比最强超级计算机快一百万亿倍 | Science...
  3. Docker、Kubernetes、Apache Mesos 之争 | 一个与传说不同的故事
  4. 微服务接口限流的设计与思考(附GitHub框架源码)
  5. 拍照时不会摆Pose怎么办?
  6. 【转载】如何在归档后启用归档信息系统
  7. mysqldump命令
  8. python与java的猜拳游戏
  9. 数据权限设计(原创)
  10. net.conn read 判断数据读取完毕_1.5 read, write, exit系统调用
  11. centos php 开启mysql扩展_CentOS 7下部署php7.1和开启MySQL扩展的方法教程
  12. HTML5新增的表单元素有哪些?
  13. 加权平均数的例子_加权平均法举例说明
  14. android 电视安装apk文件损坏,安装电视软件时提示解析包出现问题怎么破?
  15. Creational patterns
  16. 18款室内设计风格,总有一款适合你。
  17. 连分数与丢番图方程简介
  18. dhl寄件邮编错了_DHL国际快递寄错国家怎么办?
  19. 【08月20日】A股滚动市净率PB历史新低排名
  20. 读书笔记005:《伤寒论》- 足阳明胃经

热门文章

  1. linux C语言 socket编程教程(附两个例子)(socket教程)
  2. #ifdef __cplusplus 的用法(C语言调用c++代码)(extern “C“)
  3. Python 计算机视觉(十七)—— 基于KNN的图像分类
  4. androidstudio mac mini_GitHub - jp1017/AndroidStudioPlugins: Android Studio 常用插件及浅释
  5. android重写方法,android中native js中重写方法问题
  6. python编辑器_10 个可以在平板电脑上使用的 Python 编辑器
  7. 微服务架构方案 springBoot+dubbo
  8. python 拓扑排序_拓扑排序(topsort)算法详解
  9. python爬取小说写入txt_对新笔趣阁小说进行爬取,保存和下载!这就是Python的魅力...
  10. nmap扫描局域网存活主机_安全工程师都在用的网络扫描软件,巧用ARP协议发现主机。第二节...