对于两个整数a,ba,b,如果bb是严格大于aa且各位数字均不相同的最小整数,就视bb为aa的跟屁虫。现在给定aa,请用C++语言你找出它的跟屁虫bb。
时间: 2023-12-27 14:05:34 浏览: 116
以下是C++代码实现:
```cpp
#include <iostream>
using namespace std;
bool check(int x) {
int vis[10] = {0};
while (x > 0) {
int t = x % 10;
if (vis[t]) return false;
vis[t] = 1;
x /= 10;
}
return true;
}
int main() {
int a;
cin >> a;
for (int i = a + 1; ; i++) {
if (check(i)) {
cout << i << endl;
break;
}
}
return 0;
}
```
首先,我们需要一个函数`check`来检查一个整数是否满足各位数字均不相同的条件。具体实现是,我们使用一个长度为10的数组来记录每个数字是否出现过,如果出现过则返回false,否则返回true。
接下来,在主函数中读入整数a,然后从a+1开始依次枚举整数,判断是否满足条件。如果满足条件,则输出该整数并退出程序。
相关问题
题目描述 具体而言,给定两个整数 a,ba,b,保证 b\neq 0b =0。莲子要实现这样一个函数 \operatorname{fun}(a,b)fun(a,b) 来将 bb 的符号转移到 aa 上。 具体而言,\operatorname{fun}(a,b)=\operatorname{sgn}(b)\times |a|fun(a,b)=sgn(b)×∣a∣。其中,\operatorname{sgn}(b)=\begin{cases}1&b>0\\-1&b<0\end{cases}sgn(b)={ 1 −1 b>0 b<0 换而言之: 如果 bb 是正数,那么 \operatorname{fun}(a,b)=+|a|=|a|fun(a,b)=+∣a∣=∣a∣; 如果 bb 是负数,那么 \operatorname{fun}(a,b)=-|a|fun(a,b)=−∣a∣。 输入格式 共一行两个整数 a,ba,b。 输出格式 共一行一个整数 \operatorname{fun}(a,b)fun(a,b) 的值。
给定两个整数 a 和 b,保证 b 不等于 0。要实现一个函数 fun(a,b),将 b 的符号转移到 a 上。
具体而言,fun(a,b) = sgn(b) × |a|,其中 sgn(b) = {1,当 b > 0;-1,当 b < 0;0,当 b = 0}。
蜗蜗很喜欢玩一个游戏:一共有三个不透明的杯子,倒扣着在桌面上排成一排,只有中间那个杯子里面有一个小球,然后不断地快速交换杯子的位置(里面的球跟着杯子一起动),最后让别人猜球到底在哪个位置上。现在小蜗蜗想让你帮他完成移动杯子的动作,并悄悄告诉你他只会交换kk次杯子的位置,然后他会将交换哪两个杯子的指令告诉你,最后请你找出球在哪个位置。 输入格式 第一行一个整数kk。 接下来一共kk行。每一行包含两个整数a,ba,b,a,ba,b都在11到33之间并且它们不相等,表示将从左往右的第aa个杯子和从左往右的第bb个杯子交换。 输出格式 输出一个整数,在11到33之间,表示现在球在从左往右的第几个杯子底下。注意,一开始小球在中间那个杯子里,也就是从左往右的第22个杯子。
这道题的思路就是:刚开始球在第二个杯子里,每次交换的时候就把球的位置记录下来。最后输出球最后停留的位置。
你可以使用一个数组来记录球的位置。每次交换的时候,就交换两个杯子的位置,并且把球的位置也同时更新。
举个例子:
假如刚开始球在第二个杯子里,也就是数组的第二个位置,球的位置数组就是:[0, 1, 0]
然后给出交换杯子的指令,交换第一个和第三个,那么杯子的位置数组就变成:[1, 0, 1]
然后再给出交换杯子的指令,交换第二个和第三个,那么杯子的位置数组就变成:[1, 1, 0]
最后输出数组中值为1的位置就是球停留的位置。
代码如下:
```
int k;
cin >> k;
int a[3] = {0, 1, 0}; // 初始化球的位置数组
while (k--) {
int a1, b1;
cin >> a1 >> b1;
// 交换杯子的位置
swap(a[a1 - 1], a[b1 - 1]);
}
// 输出球最后停留的位置
for (int i = 0; i < 3; i++) {
if (a[i] == 1) {
cout << i + 1 << endl;
break;
}
}
```
阅读全文