题意:求nk的前三位和后三位。

分析:

1、后三位快速幂取模,注意不足三位补前导零。

补前导零:假如nk为1234005,快速幂取模后,得到的数是5,因此输出要补前导零。

2、前三位:

令n=10a,则nk=10ak=10x+y,x为ak的整数部分,y为ak的小数部分。

eg:n=19,k=4,则nk=130321,

a=log10(n)=1.2787536009528289615363334757569

ak=5.1150144038113158461453339030277,

因此,x=5,y=0.1150144038113158461453339030277,

10y=1.3032099999999999999999999999999,因此要获得前三位只需要10y*100下取整即可。

3、注意:

log(double x)---底数为e

log10(double x)---底数为10

log2(double x)---底数为2

#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int POW_MOD(int n, int k, int MOD){
if(k == 0) return 1 % MOD;
int tmp = POW_MOD(n, k >> 1, MOD);
long long ans = (tmp * tmp) % MOD;
if(k & 1) (ans *= (n % MOD)) %= MOD;
return ans;
}
int main(){
int T;
scanf("%d", &T);
int kase = 0;
while(T--){
int n, k;
scanf("%d%d", &n, &k);
int x = (int)(pow(10.0, fmod(log10(n * 1.0) * k, (int)(log10(n * 1.0) * k))) * 100);
int y = POW_MOD(n, k, 1000);
printf("Case %d: %d %03d\n", ++kase, x, y);
}
return 0;
}

  

最新文章

  1. HDU 1166 敌兵布阵 (树状数组)
  2. Atitit 图像处理知识点 &#160;知识体系 知识图谱
  3. linux进程间通信-信号量(semaphore)
  4. SilverLight自定义ImageButton
  5. nginx学习笔记1
  6. C# 特性详解(上)
  7. com.velocity.servlet
  8. GitHub 小试
  9. java数组中的三种排序方法中的冒泡排序方法
  10. The Hungarian algorithm Template
  11. pgmpy包的安装,以及conda的安装
  12. UWP ListView下模板宽度问题
  13. Sping Boot入门到实战之入门篇(一):Spring Boot简介
  14. MySQL基础知识-安装MySQL
  15. Shell 字符截取命令 awk
  16. form表单总结
  17. nrm 使用
  18. js闭包 选择器 面向对象 事件 操作页面
  19. Redis-五种数据类型解析
  20. [翻译] snapshotViewAfterScreenUpdates

热门文章

  1. 修改DUILIB任务栏中显示的图标和EXE图标
  2. 《C Primer Plus(第6版)(中文版)》普拉达(作者)epub+mobi+azw3
  3. app开屏广告
  4. java核心-多线程(6)-线程池-ThreadPoolExecutor
  5. netcore webCache缓存
  6. 五 Hibernate的其他API,Query&amp;Criteria&amp;SQLQuery
  7. HTML学习第七天(一)
  8. Python测试进阶——(7)动手编写Bash脚本启动Python监控程序并传递PID
  9. 【转】转帖并注释:Java中的事件处理机制--事件监听器的四种实现方式
  10. Django(十)模型:django模型类对数据库的:增/删/改/查、自关联、管理器、元选项(指定表名)