求助简单站外题
  • 板块学术版
  • 楼主__er
  • 当前回复9
  • 已保存回复9
  • 发布时间2022/11/6 08:44
  • 上次更新2023/10/27 04:07:18
查看原帖
求助简单站外题
713955
__er楼主2022/11/6 08:44

数字炸弹游戏规则:设定任意大于 11 的正整数 kk 为数字炸弹,报到 kk 的倍数或者数字中含有 kk 的数就跳过该数直接报下一个,例如

k=3k=3 时,其中一段报数序列如下:…10,11,14,16,17,19,20,22,25,26,28……

k=110k=110 时,其中一段报数序列如下:……1097,1098,1099,1111,1112,1113……

每轮报到第 nn 个数后即停止游戏。你需要输出这第 nn 个数是什么。

#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了(悲

n105n \le 10^5

我再也回不到写紫题题解的那个时期了啊……说不定明年AFO了,太菜了

2022/11/6 08:44
加载中...