递归TLE求助
查看原帖
递归TLE求助
976610
I_am_qed楼主2023/11/7 21:09
#include <iostream>
#include <stack>
#include <cmath>

using namespace std;

int p, q, r;

int toDencimal(int base, int n)
{
    stack<int> number;
    while (base != 0)
    {
        number.push(base % 10);
        base /= 10;
    }
    int result = 0;
    for (int i = 0; i < number.size(); i++)
    {
        result += number.top() * pow(n, number.size() - i - 1);
        number.pop();
    }
    return result;
}

int MAX_digit(int base)
{
	int max;
	while (base != 0)
    {
        if(max < base % 10)
        {
        	max = base % 10;
		}
        base /= 10;
    } 
    return max;
}

int f(int n)
{
	if(max(MAX_digit(q), MAX_digit(p)) >= n)
	{
		n = max(MAX_digit(q), MAX_digit(p)) + 1;
	}
    int a, b, c;
	a = toDencimal(p, n);
	b = toDencimal(q, n);
	c = toDencimal(r, n);
	if(a * b == c)
	{
		return n;
	}
	return f(n + 1);
}

int main()
{
    cin >> p >> q >> r;
    cout << f(2);
    return 0;
}
2023/11/7 21:09
加载中...