|
发表于 2022-10-5 23:00:01
|
显示全部楼层
根据题意得等式:(10*A+B)k=10^n*B+A
然后枚举n,k,B求出整数值A,最后输出10*A+B。
答案:59206
- #include <iostream>
- #include <string>
- #include <mpirxx.h>//应用了大数库mpir
- using namespace std;
- int main(void)
- {
- mpz_class nS = 0;
- for (int n = 1; n <= 99; ++n)//枚举A的位数
- {
- mpz_class z;
- mpz_ui_pow_ui(z.get_mpz_t(), 10, n);
- for (int k = 1; k <= 9; ++k)//枚举倍数
- {
- mpz_class z1 = z - k;
- mpz_class z2 = 10;
- z2 = z2 * k - 1;
- for (int B = 1; B <= 9; ++B)//枚举个位数
- {
- mpz_class z3 = z1 * B;
- if (z3 % z2 == 0)
- {
- z3 = z3 / z2;
- string s = z3.get_str(10);
- if (s.length() == n)
- {
- z3 = z3 * 10 + B;
- nS += z3;
- nS %= 100000;
- }
- }
- }
- }
- }
- cout << nS << endl;
- return 0;
- }
复制代码 |
|