💡 题解:拼接等式 G(A, B) = F(A, B)
🧩 题目回顾
我们要求在给定整数范围 , 的前提下,统计满足以下等式的整数对 的个数:
其中:
- 表示将 A 和 B 拼接起来形成的新整数(如 )
🧮 数学推导
我们来推导出这个条件成立的充要条件。
🧱 表达 G(A, B)
设 B 是一个 d 位整数,则拼接公式为:
🔍 展开 F(A, B)
📐 带入等式:
两边减去 B:
✅ 推导结论
由上式推出:
满足等式的 B 必须是形如:9, 99, 999, 9999, ... 的数 与 A 的取值无关
这意味着:
- B 是所有位都为 9 的数字
我们将这些数称为“全 9 数”。
📊 答案计算方法
对于每个合法的 B:
- 可以配对所有
- 共计 n 个合法 A
设这样的 B 的个数为 s,则答案为:
其中 s 是满足 的个数。
🧠 实现思路
#include <bits/stdc++.h>
using namespace std;
int main() {
long long n, m;
cin >> n >> m;
long long s = 0;
for (long long i = 9; i <= m; i = i * 10 + 9) {
s++; // 统计合法的“全9数”个数
}
cout << n * s << endl; // 每个全9的B都可配对n个A
return 0;
}