数字炸弹游戏规则:设定任意大于 1 的正整数 k 为数字炸弹,报到 k 的倍数或者数字中含有 k 的数就跳过该数直接报下一个,例如
k=3 时,其中一段报数序列如下:…10,11,14,16,17,19,20,22,25,26,28……
k=110 时,其中一段报数序列如下:……1097,1098,1099,1111,1112,1113……
每轮报到第 n 个数后即停止游戏。你需要输出这第 n 个数是什么。
#include <bits/stdc++.h>
#define JS ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)
using namespace std;
int n, k, T;
vector<int> v;
bool check(int x, int k) {
if (x % k == 0) {
return 1;
}
while (x != 0) {
if (x % 10 == k) {
return 1;
}
x /= 10;
}
return 0;
}
void init(int k) {
for (int i = 1; i <= 1000000; i++) {
if (check(i, k) == 0) {
v.push_back(i);
if (v.size() == n) {
break;
}
}
}
return;
}
int main() {
JS;
cin >> T;
while (T--) {
vector<int> t;
swap(v, t);
cin >> k >> n;
init(k);
cout << v.back() << '\n';
}
return 0;
}
T了(悲
n≤105
我再也回不到写紫题题解的那个时期了啊……说不定明年AFO了,太菜了