博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Lightoj1282——Leading and Trailing(幂取模求前三位)
阅读量:2343 次
发布时间:2019-05-10

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

Description

You are given two integers: n and k, your task is to find the most significant three digits, and least significant three digits of nk.

Input

Input starts with an integer T (≤ 1000), denoting the number of test cases.

Each case starts with a line containing two integers: n (2 ≤ n < 231) and k (1 ≤ k ≤ 107).

Output

For each case, print the case number and the three leading digits (most significant) and three trailing digits (least significant). You can assume that the input is given such that nk contains at least six digits.

Sample Input

5
123456 1
123456 2
2 31
2 32
29 8751919
Sample Output
Case 1: 123 456
Case 2: 152 936
Case 3: 214 648
Case 4: 429 296
Case 5: 665 669

题解看了很久终于看懂了,总之就是要把大数转化成整数和小数的形式。

任何数n可以化成10^a,而本题是求n^k,所以n=10^(a*k)=10^(i+d)=10^i*10^d,其中i是a*k的整数部分,d是a*k的小数部分。
d可以由fmod(a*k,1)求出,fmod的作用是求浮点数的模,所以这个式子能求出a*k小于1的部分即小数部分。前面又可以根据n=10^a得a=log10(n)。
接着看10^i*10^d,现在就差i,容易想到i是控制小数的位数,因为i是整数嘛,现在要求前三位,所以i=2就行了。
所以最后求前三位的公式就出来了:pow(10,fmod(log10(n)*k,1)+2),可以直接隐式转换成int型去掉小数部分。
后三位用快速幂就行,
另外还有一个坑点,后三位算出来可能是0,所以要格式化成三位0(真坑)

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#define INF 0x3f3f3f3f#define MAXN 1000005#define mod 1000000007using namespace std;int pow_mod(int a, int n,int m){ if(n==1) return a%m; int x=pow_mod(a,n/2,m); long long ans=(long long)x*x%m; if(n&1) ans=ans*a%m; return (int)ans;}int main(){ int t,cnt=1; long long n,k; scanf("%d",&t); while(t--) { scanf("%lld%lld",&n,&k); int lead=pow(10,fmod(log10(n)*k,1)+2); int trail=pow_mod(n,k,1000); printf("Case %d: %d %03d\n",cnt++,lead,trail); } return 0;}

转载地址:http://qicvb.baihongyu.com/

你可能感兴趣的文章
多线程入门教程(二)基本概念
查看>>
多线程入门教程(三)线程控制
查看>>
多线程入门教程(四)线程间通信
查看>>
多线程入门教程(五)MFC的多线程
查看>>
多线程入门教程(六)综合实例
查看>>
C/C++ 多线程学习心得
查看>>
C/C++四种退出线程的方法
查看>>
多线程编程要点
查看>>
c++CreateEvent函数在多线程中使用及实例
查看>>
c++多线程同步(1)
查看>>
Windows 下 C/C++ 多线程编程入门参考范例
查看>>
浅析stack around the variable was corrupted
查看>>
RGB与YUV转换
查看>>
YUV转RGB的相关函数
查看>>
ES(Elasticsearch)排序与相关性
查看>>
ES(Elasticsearch)分片内部原理
查看>>
Java IO(概述)
查看>>
Java IO(文件、管道、字节和字符数组)
查看>>
Java IO(流、Reader And Writer、异常处理)
查看>>
Java IO(RandomAccessFile、File、PipedInputStream、PipedOutputStream)
查看>>