• 2020 Multi-University Training Little Rabbit's Equation 思维,简单模拟


    2020 Multi-University Training Little Rabbit's Equation

    题目大意:

    给你一个字符串,形式是:数字,操作,数字,=,数字。

    这个操作包括:+,-,*,/

    保证字符串没有空格、没有负号、没有小数点,问这个数字是什么进制满足等式,如果有多个,输出最小的进制,没有则输出-1。

    题解:

    直接模拟,有一个我觉得比较坑的点就是要判断一下 (A-F) 和字符串中的数字和进制比较大小,如果比进制大肯定是不对的。

    #include <bits/stdc++.h>
    #define debug(x) cout<<"debug:"<<#x<<" = "<<x<<endl;
    using namespace std;
    typedef long long ll;
    const int maxn = 5e3+10;
    char s[20];
    string a[10];
    int main() {
        while (scanf("%s", s + 1) != EOF) {
            int n = strlen(s + 1), now = 0, flag = 0;
            a[0]="", a[1]="", a[2]="", a[3]="";
            for (int i = 1; i <= n; i++) {
                if (s[i] == '+' || s[i] == '-' || s[i] == '*' || s[i] == '/' || s[i] == '=') now++, a[3] += s[i];
                else a[now] += s[i];
            }
            for (ll base = 2; base <= 16; base++) {
                ll num[3],maxs = 0;
                for (int i = 0; i < 3; i++) {
                    num[i] = 0;
                    int len = a[i].size();
                    for (int j = 0,x; j < len; j++) {
                        if (a[i][j] >= 'A' && a[i][j] <= 'Z') x = 10 + a[i][j] - 'A';
                        else x = a[i][j] - '0';
                        maxs = max(maxs,x*1ll);
                        num[i] = num[i] * base + x;
                    }
                }
    //            debug(maxs);
                if(maxs>=base) continue;
                if (a[3][0] == '+' && num[0] + num[1] == num[2]) flag = base;
                if (a[3][0] == '-' && num[0] - num[1] == num[2]) flag = base;
                if (a[3][0] == '*' && num[0] * num[1] == num[2]) flag = base;
                if (a[3][0] == '/' && num[0] == num[2] * num[1]) flag = base;
                if (flag) break;
            }
            printf("%d
    ", flag ? flag : -1);
        }
        return 0;
    }
    
  • 相关阅读:
    Python logging根据时间创建日志文件
    ORACLE Merge into 使用
    go安装goctl
    Oracle 行转列
    ORACLE with as查询优化
    Linux环境使用Docker安装MongoDb
    Linux环境使用Docker安装MySql
    Docker基础操作
    Linux基础命令
    Ansible自动化运维介绍
  • 原文地址:https://www.cnblogs.com/EchoZQN/p/13448632.html
Copyright © 2020-2023  润新知