题目链接:This is link.
题目大意:
有一个无穷的集合, 初始集合内有整数1, 现给定你整数a和b.
集合内部元素有如下定义: 若x存在于集合中, 则x * a存在于集合中, x + b也存在于集合当中.
请你判断整数n是否存在于集合中.
解题思路:
AC代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
int main()
{
int t; cin >> t;
while (t--)
{
int n, a, b;
cin >> n >> a >> b;
if (a == 1) //特判 a = 1 的情况
{
if ((n - 1) % b == 0) puts("Yes");
else puts("No");
continue;
}
ll k = 1, ok = 0;
while (k <= n)
{
if ((n - k) % b == 0)
{
ok = 1;
break;
}
k *= a;
}
puts(ok ? "Yes" : "No");
}
return 0;
}