博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LightOJ - 1282 Leading and Trailing (数论)
阅读量:4660 次
发布时间:2019-06-09

本文共 1105 字,大约阅读时间需要 3 分钟。

题意:求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
#include
#include
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;}

  

转载于:https://www.cnblogs.com/tyty-Somnuspoppy/p/7225874.html

你可能感兴趣的文章
年度榜单:2012年最流行的28款免费英文字体素材
查看>>
数据类型范围
查看>>
codeforce 8A-8C
查看>>
湖南省第六届大学生程序设计大赛原题 F Biggest Number (UVA1182)
查看>>
Android 自动编译、打包生成apk文件 3 - 使用SDK Ant方式
查看>>
dll和exe的共享节------多进程共享dll/exe全局变量
查看>>
Flex编程注意之如何得到itemRenderer里面的内容
查看>>
最近的一点思考,关于高手/大师/学霸
查看>>
css要点
查看>>
UIActivityIndicatorView
查看>>
大数据学习系列(5)-- 局域网yum仓库搭建
查看>>
[Canvas]新版箴言钟表
查看>>
杭电(hdu)2053 Switch Game 水题
查看>>
SDUT -refresh的停车场(栈和队列)
查看>>
使用Charles请求跳转可作为线上和线下环境的切换
查看>>
跨域请求
查看>>
浅谈Java反射
查看>>
cocos2d-x 3.8 lua 关于setAnimationCompletedCallback的修改
查看>>
mongo
查看>>
BZOJ 2037 区间DP
查看>>