#P1000. A+B 也可以不用一些运算符嘛

A+B 也可以不用一些运算符嘛

A+B problem without many things

题目背景

原题链接: 医学OJ

A+B 也可以不用一些运算符嘛。

以下是该代码中不允许使用的字符和字符串的清单:

  1. 字符 '+'(加号)
  2. 字符 '-'(减号)
  3. 字符 '*'(乘号)
  4. 字符 '/'(除号)
  5. 字符 '%'(取模)
  6. 字符 '^'(异或)
  7. 字符 '&'(与)
  8. 字符 '|'(或)
  9. 字符 '~'(取反)
  10. 字符 '!'(非)
  11. 字符串 '>>'(右移运算符)
  12. 字符串 '<<'(左移运算符)
  13. 字符串 'and'(逻辑与)
  14. 字符串 'and_eq'(与赋值)
  15. 字符串 'bitand'(位与)
  16. 字符串 'bitor'(位或)
  17. 字符串 'compl'(按位取反)
  18. 字符串 'not'(逻辑非)
  19. 字符串 'not_eq'(不等于)
  20. 字符串 'or'(逻辑或)
  21. 字符串 'or_eq'(或赋值)
  22. 字符串 'xor'(逻辑异或)
  23. 字符串 'xor_eq'(异或赋值)

在用户的代码中使用以上任何字符或字符串都会导致WA

题目描述

你是否能写出能够通过以下spj的A+B problem?

#include "testlib.h"
#include <bits/stdc++.h>
using namespace std;

int main(int argc, char* argv[]) {
    setName("A+B no '+' checker");
    registerTestlibCmd(argc, argv);
  
    ifstream cod("user_code");
    if (!cod.is_open()) {
        quitf(_fail, "Could not open user code file");
    }
  
    string line, userCode;
    while (getline(cod, line)) {
        userCode += line;
    }
    vector<string> forbidden = {
        "+", "-", "*", "/", "%", "^", "&", "|", "~", "!", ">>", "<<", 
        "and", "and_eq", "bitand", "bitor", "compl", "not", 
        "not_eq", "or", "or_eq", "xor", "xor_eq"
    };

    for (const auto& item : forbidden) {
        if (userCode.find(item) != string::npos) {
            quitf(_wa, "User code contains the '%s' character.", item.c_str());
        }
    }
    int a = inf.readInt(); 
    int b = inf.readInt(); 
    int userSum = ouf.readInt(); 
    if (userSum != a + b) {
        quitf(_wa, "Wrong sum. Expected %d, but found %d.", a + b, userSum);
    }

    quitf(_ok, "Accepted! Correct sum without using these character.");
    return 0;
}

输入格式

两个整数 aabb,满足 32768x,y32767-32768\leq x,y\leq 32767

输出格式

一个整数,即 aabb 之和。

样例 #1

样例输入 #1

123 500

样例输出 #1

623