Даны два числа P и Q в десятичном виде. Найти все базисов так, чтобы P в этих базах заканчивался десятичным представлением Q.
#include <bits/stdc++.h>
using namespace std;
void convert10tob(int N, int b)
{
if (N == 0)
return;
int x = N % b;
N /= b;
if (x < 0)
N += 1;
convert10tob(N, b);
cout<< x < 0 ? x + (b * -1) : x;
return;
}
int countDigit(long long n)
{
if (n == 0)
return 0;
return 1 + countDigit(n / 10);
}
int main()
{
long P, Q;
cin>>P>>Q;
n = countDigit(Q);
return 0;
}
В моей голове была мысль: я бы преобразовал P в другие базы и проверьте, истинно ли P % pow(10, numberofdigits(B)) == B
.
Хорошо, я могу проверить для некоторого конечного числа баз, но как узнать, где (после какой базы) прекратить проверку. Я застрял здесь.
Для большей ясности, вот пример: Для P=71,Q=13
ответ должен быть 68
и 4