题目描述
游游拿到了一个正整数 x,她希望在 x 中添加一个数字,使它成为 7 的倍数。你能帮帮她吗?
输入描述:
一个正整数 x。 1≤x≤109
输出描述:
x添加一个数字后形成的数。请务必保证操作的合法性,且一定是7的倍数。如果有多解,输出任意一个合法解。可以证明,至少存在一个正确答案。
示例1
输入
1
输出
21
说明
在前面添加一个2即可。
示例2
输入
15
输出
105
说明
在1和2的中间添加一个0。105=15*7,合法。另外,315、154等答案也是合法的。
分析
由于x 是10的9次,所以判断他最多有9位数
可以增加数字的位数的有10个位置,可以放的数字有10个(0-9)
可以将数字分成L和R两部分,用base表示他们的当前位数
L*base*10+i*base+R即为最终求的数
代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
ll x;
ll l,r;
ll base=1;
ll res;
int main()
{
cin>>x;
l=x,r=0;
while(l)
{
for(int i=0;i<=9;i++)
{
res=l*base*10+i*base+r;
if(res%7==0)
{
cout<<res<<endl;
return 0;
}
}
l=l/10;
r+=(l%10)*base;
base*=10;
}
}