码迷,mamicode.com
首页 > 其他好文 > 详细

LightOJ - 1282 -Leading and Trailing

时间:2017-07-23 12:29:28      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:mod   tps   pow   题目   ring   iostream   long   net   分析   

题目链接:https://vjudge.net/problem/LightOJ-1282

题目大意:

给出一个数n,求n^k次方后的数的前三位和后三位的值。

题目分析:

对于数的后三位可以直接用快速幂取模的方法求得。

求数的前三位,可以先对n^k取log10,此时得到

x=k*log10(n),即10^x=n^k.

x=a(x的整数部分)+b(x的小数部分);

此时a决定的是小数点的位置,b决定的是具体的数。

为了求得前三位的数,只需要求得pow(10,2+b)的值即可。

给出代码:

技术分享
 1 #include <cstdio>
 2 #include <iostream>
 3 #include <string>
 4 #include <cmath>
 5 #include <algorithm>
 6 using namespace std;
 7 long long int m_pow(long long int x,long long int k)
 8 {
 9     long long int ans=1;
10     while(k)
11     {
12         if(k&1)
13         {
14             ans=(ans*x)%1000;
15         }
16         x=(x*x)%1000;
17         k=k/2;
18     }
19     return ans;
20 }
21 int main()
22 {
23    int N;
24    cin>>N;
25    int cnt=0;
26    while(N--)
27    {
28        long long int n,k;
29        cin>>n>>k;
30        int num1=(int)m_pow(n,k);
31        double h=fmod(k*log10(1.0*n),1.0);
32        int s=(int)pow(10.0,h+2.0);
33        printf("Case %d: %d %03d\n",++cnt,s,num1);
34    }
35    return 0;
36 }
View Code

 

LightOJ - 1282 -Leading and Trailing

标签:mod   tps   pow   题目   ring   iostream   long   net   分析   

原文地址:http://www.cnblogs.com/DLKKILL/p/7223975.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!