2022绍兴市初中组编程比赛-----问题 A: 双倍数字(number) 题解

本文最后更新于:2 年前

题目

问题 A: 双倍数字(number)

题目描述

给你一个整数 n,你需要求出最少在 n 的末尾添加多少个数字 k,使得 n 成为“双倍数字”。保证所有数据答案都存在。
“双倍数字”是指能被表示成aa形式的数字(a可以为任意正整数),比如“123123”,“1919”是“双倍数字”,而“114514”就不是“双倍数字”。

输入

一行一个整数n和一个数字k。

输出

一行一个整数,表示答案。

样例输入

1
451145 1

样例输出

1
2

提示

样例输入2
8888 8
样例输出2
0
【数据范围】
对于20%的数据,n<10;
对于40%的数据,n<10^3;
对于60%的数据,n<10^6;
对于80%的数据,n<10^9;
对于所有数据,1≤n<10^18,1≤k≤9。

题解

因为保证有解,模拟即可,注意输入用字符串,如果长度是奇数直接跳掉就行啦~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <bits/stdc++.h>
using namespace std;
string n;
string k;
bool b = 1;
int sum;
int main() {
cin >> n >> k;
while (1){
if (n.size()%2 == 0){
b = 1;
for (int i = 0; i < n.size()/2; i++){
if (n[i] != n[n.size()/2+i]){
b = 0;
break;
}
}
if (b){
printf("%d",sum);
return 0;
}
}
n = n+k;
sum++;
}
return 0;
}


2022绍兴市初中组编程比赛-----问题 A: 双倍数字(number) 题解
https://xieyanshe-blog.github.io/posts/1134844726/
作者
Seth
发布于
2022年7月28日
更新于
2022年7月28日
许可协议