题目
题意:给定数
10
<
=
n
<
999
10<=n<999
10<=n<999,要求改变n的某些位数,使得数能被7整除。要求改完后位数不变。
思路:如果原数能整除,则不用改动;否则,尝试从个、十、百去改变。最多只需要改动一位,即可满足要求。注意特殊考虑前缀0的情况。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn = 110;
int n;
void solve() {
scanf("%d", &n);
if (n % 7 == 0) {
printf("%d\n", n);
return;
}
int a = n / 100, b = (n / 10) % 10, c = n % 10;
int x;
if ((x = a * 100 + b * 10) % 7 == 0) {
printf("%d\n", x);
return;
}
if (a && (x = a * 100 + c) % 7 == 0) {
printf("%d\n", x);
return;
}
for (int i = 1; i <= 9; ++i) {
x = a * 100 + b * 10 + i;
if (x % 7 == 0) {
break;
}
x = a * 100 + i * 10 + c;
if ((a + b) && x % 7 == 0) {
break;
}
x = i * 100 + b * 10 + c;
if (a && x % 7 == 0) {
break;
}
}
printf("%d\n", x);
}
int main() {
int t;
scanf("%d", &t);
while(t--) {
solve();
}
return 0;
}