拼多多笔试题
描述:生成一种无限数字集合的方式是:
1.初始状态集合中只有一个种子元素a
2.对于集合中的每个元素x,有x+b也属于该集合
3.对于集合中的每个元素x,有x*c也属于该集合
对于给定的参数a,b和c,判断q是否也在集合里
输入描述:第一行一个数字,表示用例组数。
后面n行,代表每个用例的a,b,c,q
#include<iostream>
#include<queue>
#include<vector>
using namespace std;
bool check(int &a, int &b, int &c, int &q) {
queue<int> que;
que.push(a);
while (!que.empty()) {
int temp = que.front();
if (temp > q) return 0;
if (temp == q)return 1;
que.push(temp + b);
que.push(temp * c);
que.pop();
}
return 0;
}
int main()
{
int n;
int a, b, c, q;
cin >> n;
vector<int> res(n, 0);
for (int i = 0; i < n; ++i) {
cin >> a >> b >> c >> q;
res[i] = check(a, b, c, q);
}
for (int i = 0; i < res.size(); ++i) {
cout << res[i] << endl;
}
system("pause");
return 0;
}