zoukankan      html  css  js  c++  java
  • E

    这道题来说,解题的思路非常的重要,不是暴力能解决的题目。n*k = (10^x) * (10^y)  .y的部分是决定位数上面具体的值。因此得到y之后在int first =10^(y+2) ,就是前三位数字。解决这道题必须要用上<cmath> 之下的很多函数,fmod,pow,log10等等。代码之后将详细介绍它们的用法。

    code :

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    typedef long long ll;
    
    ll quickpow(ll m,ll n,ll k)  //快速幂取模函数,m:底数:指数,k:取模数
    {
        ll ans=1;          //结果数ans
        m=m%k;
        while(n > 0)       //当指数大于0的时候就执行循环
        {
            if(n&1)       //跟if(n%2 == 1) 的效果一样
                ans = (ans*m)%k;    //消除指数为奇数的影响
            n=n >> 1;          //n的二进制数右移一位;
            m = (m*m) % k;      // 因为指数右移,所以这一步要消除指数右移的影响
        }
        return ans%k;
    }
    //其实快速幂取模跟快速幂函数相差无几,只是记得在关键步骤后面要对K取模,防止数据爆掉;
    
    int main()
    {
        ll m,n,T;
        scanf("%lld",&T);
        for(int i=1;i<=T;i++)
        {
            scanf("%lld %lld",&m,&n);
            int first = pow(10.0,2.0+fmod(n*log10(m*1.0),1));
    
            //cout<<"mod = "<<mod<<endl;
            int second = quickpow(m,n,1000);
            printf("Case %d: %d %03d
    ",i,first,second);
        }
        return 0;
    }
    /*
    1、%03d 输出形式
    2、n&1 的判断格式
    3、fmod 函数的用法
    4、pow 函数的用法
    5、快速幂取模函数
    */

     代码上面的:

    第一点:%03d  的输出格式,前三位不会出现019这样的情况,但是后三位会出现,当后三位是019这样的情况时,为输出保证是三位数而不是19,就要写成%03d;(这是题目的小陷阱,多注意)。

    第二点:n & 1  的书写格式可以参照,意思就是判断数的奇偶性,起到的效果跟n % 2 == 1 一样。

    第三点:fmod 函数,double fmod(double x,double y);函数返回x/y的余数。举个例子:在这道题中,a=15.123456的小数部分怎么得到?就是fmod(a,1.0);就可以了。

    第四点:double pow(double base,double exp);

    第五点:学会熟练运用快速幂取模函数,可以把它跟快速幂函数一起记忆,因为他们之间有很多相似点。

    最最重要的一点就是这道题的解题思路,log10n=指数。n*k = (10^x) * (10^y)  .10^y 的值才是决定位数上面的具体的值。这是要记下的!!!

  • 相关阅读:
    win10 uwp 弹起键盘不隐藏界面元素
    win10 uwp 存放网络图片到本地
    win10 uwp 存放网络图片到本地
    sublime Text 正则替换
    sublime Text 正则替换
    win10 uwp 绘图 Line 控件使用
    win10 uwp 绘图 Line 控件使用
    AJAX 是什么?
    什么是 PHP SimpleXML?
    PHP XML DOM:DOM 是什么?
  • 原文地址:https://www.cnblogs.com/myxdashuaige/p/8992380.html
Copyright © 2011-2022 走看看