Leading and Trailing

Leading and Trailing
题面

题意
输出 n k n^{k} nk的前3位数与后3位数,如果位数不够补0。
分析
n k n^{k} nk的后三位,相对而言,是容易求出的。我们可以直接用快速幂取模的方法,对 n k n^{k} nkmod1000,即可以得到我们所要求的答案。但是这题的难点主要是怎么求前三位,接下来我来重点讲一下怎么推导求前三位的方法。
推导
n k n^{k} nk= 1 0 l g n k 10^{lgn^{k}} 10lgnk= 1 0 k l g n 10^{k*lgn} 10klgn,设 k l g n = a + b ( a b ) k*lgn=a+b(其中a是整数,b是小数) klgn=a+b(ab)
那么 n k n^{k} nk= 1 0 l g n k 10^{lgn^{k}} 10lgnk= 1 0 k l g n = 1 0 a + b = 1 0 a 1 0 b 10^{k*lgn}=10^{a+b}=10^{a}*10^{b} 10klgn=10a+b=10a10b
我们可以知道 1 0 a 10^{a} 10a并不会改变前3位数的大小,仅仅改变位置,但是 1 0 b 10^{b} 10b中b是小数,所以会改变前3位数的大小
1 = 1 0 0 &lt; = 1 0 b &lt; 1 0 1 = 10 ( 0 &lt; = b &lt; 1 ) 1=10^{0}&lt;=10^{b}&lt;10^{1}=10 (0&lt;=b&lt;1) 1=100<=10b<101=10(0<=b<1),这下问题就转化为如何求b?
如何求b呢
modf()函数
利用这个函数就可以把 k l g n k*lgn klgn的b算出来,那么我们还要分析一下 k l g n k*lgn klgn是否会出现数据范围爆出的问题,double可控制的是16位,而 k l g n &lt; 1 e 9 k*lgn&lt;1e9 klgn<1e9.所以可实现。
AC代码

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
ll n,k,fir,res;
double x,y;
ll quick_mod(ll a,ll b,ll p){
	ll num=a,sum=1;
while(b){
	if(b&1){
		sum=sum*num%p;
	}
	num=num*num%p;
	b>>=1;
}
return sum;
}///a^b mod p*/
int main(){
	int t,num=1;
	cin>>t;
	while(t--){
	        scanf("%lld%lld",&n,&k);
		res=quick_mod(n,k,1000);///res表示后三位
		y=modf((double)(k*log10(n)),&x);
		fir=pow(10,y)*100;
		printf("Case %d: %03lld %03lld\n",num++,fir,res);
	}
	return 0;
}

全部评论

相关推荐

02-25 19:38
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 长得好看会提高面试通过率吗? #
3288次浏览 43人参与
# HR最不可信的一句话是__ #
1035次浏览 32人参与
# MiniMax求职进展汇总 #
24948次浏览 321人参与
# 春招至今,你的战绩如何? #
15022次浏览 140人参与
# AI面会问哪些问题? #
905次浏览 22人参与
# 你的实习产出是真实的还是包装的? #
2763次浏览 52人参与
# 巨人网络春招 #
11490次浏览 224人参与
# 沪漂/北漂你觉得哪个更苦? #
1322次浏览 40人参与
# 你做过最难的笔试是哪家公司 #
1152次浏览 20人参与
# AI时代,哪个岗位还有“活路” #
2715次浏览 50人参与
# XX请雇我工作 #
51149次浏览 171人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7971次浏览 43人参与
# 简历第一个项目做什么 #
32089次浏览 359人参与
# 简历中的项目经历要怎么写? #
310939次浏览 4260人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152851次浏览 889人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187561次浏览 1123人参与
# AI时代,哪些岗位最容易被淘汰 #
64564次浏览 866人参与
# 如果重来一次你还会读研吗 #
229978次浏览 2011人参与
# 投格力的你,拿到offer了吗? #
178279次浏览 891人参与
# 你怎么看待AI面试 #
180682次浏览 1298人参与
# 正在春招的你,也参与了去年秋招吗? #
364223次浏览 2641人参与
# 腾讯音乐求职进展汇总 #
160826次浏览 1114人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务