首页 > 试题广场 >

小红的双生数

[编程题]小红的双生数
  • 热度指数:4588 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}小红定义一个正整数是“双生数”,当且仅当该正整数的每个数位的相邻数位中,恰好有一个和该数位的数字相同。
\hspace{15pt}现在小红拿到了一个正整数 x,她希望你求出不小于 x 的最小“双生数”。

输入描述:
\hspace{15pt}输入一个正整数 x \left(1 \leqq x \leqq 10^{100\,000}\right) 代表限制。


输出描述:
\hspace{15pt}输出一个正整数,代表不小于 x 的最小“双生数”。该数字不包含前导零。
示例1

输入

123

输出

1100

说明

\hspace{15pt}在这个样例中,1100 的第一、二个数位相同,第三、四个数位相同。我们可以证明,这是符合要求的最小的双生数。
示例2

输入

114514

输出

115500
头像 番禺小韭菜
发表于 2025-03-05 15:19:33
#include <iostream> #include <vector> #include <string> using namespace std; vector<int> find(const string& s) { int 展开全文
头像 Snezhnaya
发表于 2025-06-22 17:48:02
首先奇数位肯定不行,位数直接加一再进行后续判断 偶数的话使用回溯法, 结果肯定类似于110022这样有连续俩个数字的情况,不能有四个连续的数字(题目中说了恰好),所以有这几种情况,将连续两个数字看成一个块 受限选择:当前块需不小于x的对应两位数字,计算最小可能数字。 自由选择:一旦某块大于x对应部分 展开全文
头像 牛客754921490号
发表于 2025-12-22 16:01:15
#include <iostream> #include <vector> using namespace std; /* 恰好有一个数相同,也就是每个数字必须且只能出现2次 最高位不能是0,当给出的数位数为奇数则答案是1100... 如果是偶数,逻辑略微复杂,情况过多,需要 展开全文
头像 牛客40520931号
发表于 2025-12-16 03:12:58
import java.util.Arrays; import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] arg 展开全文
头像 LR我又馋了
发表于 2025-07-23 20:55:12
def solved(): s = input() if len(s) % 2 == 1: k = (len(s)+1) // 2 print("1100" * (k//2) + "11" * (k%2)) 展开全文
头像 阿彪b
发表于 2025-12-11 22:26:07
#include <bits/stdc++.h> #include <cstdio> #include <string> using namespace std; void ooo(int n){ for(int i=0;i<n/2;i++){ 展开全文
头像 牛客355368210号
发表于 2025-03-07 18:22:26
def _solve(ss): """处理问题逻辑""" s = list(ss) n = len(s) q,r = divmod(n,2) #需要判断奇数还是偶数 #1.奇数位不可能是双生数 展开全文