题目大意:
你有一个数组,开始为1,里面的数字满足以下两点的存在:
- x*a
- x+b
求n在不在里面
题解:
假如a=3,b=6
数组内有:1 3 9
7 9 12
13 15 18
.. .. ..
满足公式n=a^m+b*y;
#include <iostream>
using namespace std;
typedef long long int ll;
int main()
{
int t;
cin >> t;
while (t--)
{
int n, a, b;
cin >> n >> a >> b;
bool flag = 0;
if (a == 1 || b == 1)//b=1时%b一定等于0
{
if ((n - 1) % b == 0)
flag = 1;
}
else
{
for (ll i = 1; i <= n; i =i*a)//ll防止i超出int范围
{
if ((n - i) % b == 0) flag = 1;
}
}
if (flag)
cout << "Yes" << endl;
else
cout << "No" << endl;
}
}