CF1633A Div.7
题目大意
给定一个整数 $n$,请你修改其一个数位上的值,使其为 $7$ 的倍数且不含前导零。 如果 $n$ 可以被 $7$ 整除,直接输出 $n$。
思路分析
由于 $n$ 位数不大,暴力枚举每一位所有情况即可。总时间复杂度 $O(T\log n)$。
主要芝士
获取 $n$ 第 $k$ 位上的数字:
n / pow(10,k) % 10
本题坑点
如果 $n$ 可以被 $7$ 整除,直接输出 $n$。修改后的 $n$ 不含前导零,要特判。
代码呈现
#include <bits/stdc++.h>
using namespace std;
int t, n;
int main() {
cin >> t;
while (t--) {
cin >> n;
if (n % 7 == 0) {
cout << n << endl;
continue;
}
int base = 1;
bool flag = false;
while (base <= n) {
for (int i = (n / (base * 10) == 0 ? 1 : 0); i <= 9; i++) {
if ((n - (n / base % 10) * base + i * base) % 7 == 0) {
cout << (n - (n / base % 10) * base + i * base) << endl;
flag = true;
break;
}
}
if (flag) break;
base *= 10;
}
}
return 0;
}
后记
作为 CF 的新年赛,本题还是挺简单的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】