专栏文章
【题解】CF2140B Another Divisibility Problem
CF2140B题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miny70kn
- 此快照首次捕获于
- 2025/12/02 10:17 3 个月前
- 此快照最后确认于
- 2025/12/02 10:17 3 个月前
题意理解
题目先给一个数 ,算出 。接着把 和 拼接起来得到一个新数 ,要求满足 能整除 。
举个例子:如果 ,假设 ,那拼接后的 就是 ,这时候要检查 能不能整除 。
很明显不能,所以 。
思路推导
- 首先,得解决“拼接”怎么用公式表示。
比如 ( 位)、( 位),拼接后是 ,这个结果其实是 。
所以总结出规律:如果 有 位数字,那么拼接后的数 。这一步是整个推导的基础,必须先想明白。
- 其次,利用整除条件变形
题目核心要求是 能整除拼接后的数 。
根据之前得出的拼接公式 ,这个整除关系用同余表示就是:。
这里可以用一个同余的小技巧简化式子:因为 本身除以 的余数是 ,即 ,把 移到等号右边就能得到 。
也就是 和 除以 的余数相同。
把 。
代入之前的同余式 。
把 替换成 ,就能得到 。
再把左边的 提取出来整理,最终简化为 。
- 接着,找最简单的满足条件的情况。
要让 能被 整除,最直接的办法就是让 等于 。
因为 是 的约数,肯定能整除。
这样一来,,接下来只要确定 的值就行。
- 最后,确定 的取值。
题目要求 ,同时 。我们先假设 。
因为 且 。
等量代换 。
因为 ,所以 最小是 ,显然满足 ,而且 的位数正好是 位,完全符合条件。
所以结论就是:。
代码实现
CPP#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
long long x;
cin>>x;
cout<<999999999 - x<<endl;
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...