• Hrbust 1535 相爱


    Description

    静竹在斐波那契的帮助下,渐渐的和数学相爱了。和数学在一起最有意思的就是它能够出一些特别有意思并且巧妙的题目让静竹来思考。这次也不例外,给静竹两个数a,b,又给出了加,减,乘,除,乘方五种操作六种算式(a + b, a – b, a * b, a / b, a ^ b, b ^ a)让静竹从中挑一种操作使得a,b处理后数值变得最大。静竹思考了一番发现,这个结果可能会特别大怎么办呢?为了解决这个问题,数学又给出了一个数m,让最终结果对其求余就可以让结果变小了。

    Input

    每行输入三个整数a, b, m(0 <=a, b <=100000000,  0< m <1000)
    处理到文件结束

    Output

    对于每行的输入,输出一个整数代表结果最终的结果

    Sample Input

    2 3 5
    3 2 5

    Sample Output

    4
    4

    题解:

    1、不难发现,这个题有很多小细节,而且各种小细节一定都是a,b非常小的情况下才有,通过手写模拟不难发现,当a,b足够大的时候(其实10就算足够大了).五种运算中,一定是幂所带来的收益最大,而且也不难发现,这种情况下,一定是min(a,b)^max(a,b)是最大的值,所以我们如果a,b足够大的时候,直接输出min(a,b)^max(a,b)%mod即可。

    2、那么各种小细节如何处理呢?因为a,b足够小,所以直接暴力维护最大值最后取模即可啊!

    3、注意b==0的时候不能进行除法。

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    #define LL long long
    LL a,b,m;
    LL work(LL a,LL b)
    {
        LL num=1;
        while(b>0)
        {
            if (b%2==1) num=num*a;
            a=a*a;
            b=b/2;
        }
        return num;
    }
    LL work2(LL a,LL b)
    {
        LL num=1;
        while(b>0)
        {
            if (b%2==1) num=num*a%m;
            a=a*a%m;
            b=b/2;
        }
        return num%m;
    }
    int main()
    {
        while(~scanf("%lld%lld%lld",&a,&b,&m))
        {
            LL ans=0;
            ans=max(a+b,a*b);
            if (a>b) swap(a,b);
            if (b<=10)
              ans=max(max(ans,work(a,b)),work(b,a));
             else  ans=work2(a,b);
    
             printf("%lld
    ",ans%m);
        }
        return 0;
    }
  • 相关阅读:
    EntityFramework优缺点
    领导者与管理者的区别
    七个对我最好的职业建议(精简版)
    The best career advice I’ve received
    Difference between Stored Procedure and Function in SQL Server
    2015年上半年一次通过 信息系统项目管理师
    Difference between WCF and Web API and WCF REST and Web Service
    What’s the difference between data mining and data warehousing?
    What is the difference between a Clustered and Non Clustered Index?
    用new创建函数的过程发生了什么
  • 原文地址:https://www.cnblogs.com/stepping/p/6557287.html
Copyright © 2020-2023  润新知