题目:
无限集合:
该集合初始化含有一个元素A,B,C
对该集合中的任意数X,有X + B 属于该元素
对该集合中的任意数X,有X * C 属于该元素
给出N行,每一行分别是数字 A,B,C,Q
判断Q是否属于该集合。属于输出1,不属于输出0;
譬如: 1 2 3 5 : 1(因为5 = (3+2))
3 3 3 7 : 0 (元素集合为:3 3 3 6 9 18 12 27.。。。。)
代码:
#include<vector>
#include<iostream>
#include<map>
#include<queue>
using namespace std;
using ll=long long;
int main() {
ll T,A,B,C,Q;
cin>>T;
while(T--){
cin>>A>>B>>C>>Q;
if(C==1){
if((Q-A)%B==0){
cout<<"1"<<endl;
}else{
cout<<"0"<<endl;
}
}
else{
ll flag=0,t=A;
while(t<=Q){
if(t%B==Q%B){
flag=1;
break;
}
t*=C;
}
if(flag){
cout<<"1"<<endl;
}else{
cout<<"0"<<endl;
}
}
}
return 0;
}