zoukankan      html  css  js  c++  java
  • LightOJ

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

    求后三位我们可以用快速幂取模算出来,但是前三位怎么办呢?

    对于任意一个数y,都可以表示为10^x,这实际上就是一个以10为底的指数函数,y = 10^x,所以x = log10(y),这个x就分为整数部分和小数部分。n^k就可以表示为10^xk,我们假设这个 xk 为 a.b ,那么n = 10^a + 10^0.b 这里的10^a影响大小,10^0.b影响精度,我们要取前三位就只需要知道b即可,因为b才会影响精度,所以10^2.b 就是我们的答案,代码如下:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 
     4 typedef long long LL;
     5 typedef unsigned long long ULL;
     6 
     7 LL quick_pow(LL a, LL b, LL m){
     8     LL ans = 1;
     9     while(b){
    10         if(b&1) ans = ans*a%m;
    11         a = a*a%m;
    12         b >>= 1;
    13     }
    14     return ans;
    15 }
    16 
    17 int main(){
    18     int T;
    19     scanf("%d", &T);
    20     for(int ca = 1; ca <= T; ++ca){
    21         LL n, k;
    22         scanf("%lld%lld", &n, &k);
    23         LL a = (LL)pow(10.0, fmod(log10((double)n)*(double)k, 1)+2.0);
    24         LL b = quick_pow(n, k, 1000);
    25         printf("Case %d: %03lld %03lld
    ", ca, a, b);
    26     }
    27     return 0;
    28 }
    View Code
  • 相关阅读:
    input输入密码变黑点密文
    清除浮动的几种方法
    const let,console.log('a',a)跟console.log('a'+a)的区别
    Egret Wiing3快捷键
    时间转换成2016/12/29 14:23:09格式
    http status code
    构造函数模式
    Log4net
    Autofac
    WebApi返回Json格式字符串
  • 原文地址:https://www.cnblogs.com/DynastySun/p/9451819.html
Copyright © 2011-2022 走看看