zoukankan      html  css  js  c++  java
  • 题解 AT4251 【[ABC110A] Maximize the Formula】

    突然想到一个奇怪的方法。

    只有 (3) 个数,每个数还都是个位数,那直接一个一个判断不就行了。

    那么,就有下列排列方法。

    • (overline{ab} + c)
    • (overline{ac} + b)
    • (overline{ba} + c)
    • (overline{bc} + a)
    • (overline{ca} + b)
    • (overline{cb} + a)
    • (a + overline{bc})
    • (a + overline{cb})
    • (b + overline{ac})
    • (b + overline{ca})
    • (c + overline{ab})
    • (c + overline{ba})

    然后我们只需要把他们加起来然后找最大值就可以了。

    那么如何把两个数字拼在一起呢?

    很简单,只需要把第一个数 ( imes 10) 后再加上第二个数即可,也就是 (a imes 10 + b)

    代码:

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int maxv = -100, a, b, c;
        scanf("%d%d%d", &a, &b, &c);
        if((a * 10 + b) + c > maxv)maxv = (a * 10 + b) + c;
        if((a * 10 + c) + b > maxv)maxv = (a * 10 + c) + b;
        if((b * 10 + a) + c > maxv)maxv = (b * 10 + a) + c;
        if((b * 10 + c) + a > maxv)maxv = (b * 10 + c) + a;
        if((c * 10 + a) + b > maxv)maxv = (c * 10 + a) + b;
        if((c * 10 + b) + a > maxv)maxv = (c * 10 + b) + a;
        if(a + (b * 10 + c) > maxv)maxv = a + (c * 10 + b);
        if(a + (c * 10 + b) > maxv)maxv = a + (c * 10 + b);
        if(b + (a * 10 + c) > maxv)maxv = b + (a * 10 + c);
        if(b + (c * 10 + a) > maxv)maxv = b + (c * 10 + a);
        if(c + (a * 10 + b) > maxv)maxv = c + (a * 10 + b);
        if(c + (b * 10 + a) > maxv)maxv = c + (b * 10 + a);
        printf("%d", maxv);
        return 0;
    }
    
  • 相关阅读:
    codeforces 368B
    codeforces 651A
    codeforces 651B
    codeforces 732B
    codeforces 313B
    codeforces 550A
    codeforces 498B
    Linux C/C++基础——内存分区
    Linux C/C++基础——变量作用域
    Linux C/C++基础——Windows远程登录Linux
  • 原文地址:https://www.cnblogs.com/tearing/p/12577121.html
Copyright © 2011-2022 走看看