zoukankan      html  css  js  c++  java
  • E

    /**
    题目:E - Leading and Trailing
    链接:https://vjudge.net/contest/154246#problem/E
    题意:求n^k得前三位数字以及后三位数字,保证一定至少存在六位。
    思路:后三位求法只要不断对1000取余就行了。
    前三位求法:
    对一个数x,他可以用科学计数法表示为10^r*a (r为次方,1<=a<10)
    设:n^k = x = 10^r*a
    两边取对数: k*log10(n) = log10(x) = r+log10(a);
    令y = k*log10(n); 因为r是整数,1<=a<10所以0<=log10(a)<1
    所以log10(a)为y的小数部分;即log10(a) = y-(long long)y;
    a = 10^(y-(long long)y);
    最终结果为:(long long)(a*100)即为前三位;
    */
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int maxn = 1e6+100;
    ///后三位
    ll Least(ll n,ll k)
    {
        ll p = 1;
        while(k>0){
            if(k&1) p = p*n%1000;
            n = n*n%1000;
            k >>= 1;
        }
        return p;
    }
    ///前三位
    ll Leading(ll n,ll k)
    {
        double y = k*log10(n);
        double a = pow(10.0,y-(ll)y);
        return (ll)(a*100);
    }
    int main()
    {
        int T, cas=1;
        ll n, k;
        cin>>T;
        while(T--){
            scanf("%lld%lld",&n,&k);
            ///注意这里后三位要输出三位。
            printf("Case %d: %lld %03lld
    ",cas++,Leading(n,k),Least(n,k));
        }
        return 0;
    }
  • 相关阅读:
    Oracle性能调整ASH,AWR,ADDM
    子网掩码、子网划分详解
    10046事件sql_trace跟踪
    find详解
    date详解
    touch详解
    [转]lsof详解
    iftop、ifstat详解
    iotop详解
    关于Unity的入门游戏飞机大战的开发(上)
  • 原文地址:https://www.cnblogs.com/xiaochaoqun/p/6618130.html
Copyright © 2011-2022 走看看