题目
给你一个整数 n。 您必须更改其中的最小位数,使得结果数字没有任何前导零并且可以被 7 整除。
如果有多种方法可以做到这一点,请打印其中任何一种。 如果给定的数字已经能被 7 整除,则保持不变。
输入
第一行包含一个整数 t (1≤t≤990)——测试用例的数量。
然后是测试用例,每个测试用例由一行组成,其中包含一个整数 n (10≤n≤999)。
输出
对于每个测试用例,打印一个不带任何前导零的整数——更改的结果(即可以被 7 整除的整数,可以通过更改 n 中的最小可能位数来获得)。
如果有多种方法可以应用更改,请打印任何结果数字。 如果给定的数字已经能被 7 整除,只需打印它。
题解
只需要满足被7整除这个条件并且需要改变位数最小,可以证明最多只需要改变一个位数即可使得数字满足条件,当原本的数字就可以被7整除时,直接输出本来的数字,否则我们一定可以改变个位数使得这个三位数被7整除,具体的做法是,将个位数从0-9循环一遍即可。
#include<bits/stdc++.h>
using namespace std;
int solve()
{
int n;
cin >> n;
int tn = n - n % 10;
if (n % 7 == 0)return n;
for (int i = 0; i < 10; i++)
if ((tn + i) % 7 == 0)return tn + i;
}
int main()
{
int t;
cin >> t;
while (t--)
{
cout << solve()<<endl;
}
}