1 条题解

  • 0
    @ 2026-5-3 16:02:23

    题目背景

    本题的标题 “⅓ оf а Рrоblеm” 看起来有些奇怪,其中不仅包含拉丁字母,还混入了西里尔字母(俄语字母)。实际上,这个标题暗示了题目信息被拆分在了英文和俄语两个版本的题面中。题目名称中的 “⅓” 表示三分之一,暗示英文题面只包含整个问题的 13\frac{1}{3},而俄语题面包含另外的 23\frac{2}{3}

    题目要求

    给定两个整数 aabb,你需要计算一个特定的表达式,并输出结果。输入只有一行,包含两个整数 aabb。输出即为表达式的结果。

    但是,题面中并没有直接给出表达式,而是给出了一个奇怪的片段:

    $$a\qquad \mathord{4}\qquad \mathord{+}\qquad \mathord{-}\qquad \mathord{+}\qquad \mathord{-}\qquad \mathord{)}\qquad \mathord{2} $$

    如何得到完整的表达式

    1. 发现隐藏信息

    观察英文题面的标题,可以发现一些字母实际上是西里尔字母,例如 “а” (U+0430) 并不是拉丁字母 “a” (U+0061),它们字形相同但编码不同。同样,“о” (U+043E) 和 “o” (U+006F) 看起来一样。如果复制标题中的字符并搜索,你会发现出现很多俄语结果,这提示题面与俄语有关。

    实际上,Codeforces 上许多题目有多语言版本。本题的设计者将完整表达式拆分成两部分:俄语题面和英语题面各提供一串符号。需要将两者按照正确的顺序拼接,才能得到正确的数学表达式。

    2. 拼接顺序

    根据题目的暗示(俄语部分应该放在前面),我们应该将俄语题面中给出的部分与英语题面中给出的部分连接起来。经过查看俄语题面(或通过已知信息),俄语部分提供了:12a + 14ab + abs(a - b) + (a - 3b) * b + 2 的前半段?实际上,拼接的步骤是:

    俄语部分:12a + 14ab + |a - b| + (a - 3b) b + 2 或其中的一部分,英语部分补全了另一个片段。已知题面中给出的片段是 a 4 + - + - ) 2,这可能来自俄语或英语。结合已知的最终表达式,可以反推:

    • 俄语题面片段:12a + 14ab + |a - b| + (a - 3b)
    • 英语题面片段:b + 2 以及一些符号,或者反过来。但最终组合是 12a + 14ab + |a - b| + (a - 3b) * b + 2

    从给出的片段 a 4 + - + - ) 2 来看,如果将其中的数字和符号与俄语部分混合,可以猜测 12 被拆分成了 12 等。确切地说,标准题解中提到:将两个语言的部分组合,并使俄语部分在前,得到表达式 12a + 14ab + |a - b| + (a - 3b) b + 2

    3. 表达式的最终形式

    所以,对于输入的两个整数 aabb,需要计算:

    $$\text{ans} = 12a + 14ab + |a - b| + (a - 3b) \cdot b + 2 $$

    直接计算即可。注意数据范围:虽然题目没有明确给出 a,ba, b 的范围,但通常这类题目会保证结果在 64 位有符号整数范围内。标准程序使用了 long long 类型。

    标准程序代码

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        long long a, b;
        cin >> a >> b;
        long long ans = 12 * a + 14 * a * b + abs(a - b) + (a - 3 * b) * b + 2;
        cout << ans << '\n';
        return 0;
    }
    
    • 1

    信息

    ID
    6751
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    1
    已通过
    1
    上传者