Educational Codeforces Round 122 A. Div. 7

题目

给你一个整数 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;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值