한 숫자를 다른 숫자의 거듭제곱으로 표현하는 문제에 대해 토론하세요. x와 y라는 두 숫자가 주어졌습니다. y가 x의 거듭제곱으로 표현될 수 있는지 판단해야 합니다. 여기서 An 방정식의 각 거듭제곱은 −
Input: x = 4, y = 11 Output: true Explanation: 4^2 - 4^1 - 4^0 = 11 Hence y can be represented in the power of x. Input: x = 2, y = 19 Output: true Explanation: 2^4 + 2^1 + 2^0 =19 Hence y can be represented in the power of x. Input: x = 3, y = 14 Output: false Explanation: 14 can be represented as 3^2 + 3^1 + 3^0 + 3^0 but we cannot use one term of power of x twice.
c0(x^0) + c1(x^1) + c2(x^2) + c3(x^3) + … = y ….(1),
x를 공통 인수로 취하면
c1(x^1) + c2(x^2) + c3(x^3) + … = y - c0,
방정식 (1)과 (2)에서 숫자를 순서대로 다시 나타낼 수 있습니다. 해가 존재하려면 (y - Ci)가 x로 나누어져야 하며 Ci는 -1, 0, +1만 포함할 수 있습니다.
마지막으로 y>0까지 확인하여 [(y-1) % x == 0] 또는 [(y) % x == 0] 또는 [(y+1) % x ==를 충족하는지 확인해야 합니다. 0] 또는 해결책이 없는지 여부입니다.
Example
c1(x^0) + c2(x^1) + c3(x^2) + … = (y - c0)/x ….(2),
Output
#include <bits/stdc++.h> using namespace std; int main(){ int x = 2, y = 19; // checking y divisibility till y>0 while (y>0) { // If y-1 is divisible by x. if ((y - 1) % x == 0) y = (y - 1) / x; // If y is divisible by x. else if (y % x == 0) y = y / x; // If y+1 is divisible by x. else if ((y + 1) % x == 0) y = (y + 1) / x; // If no condition satisfies means // y cannot be represented in terms of power of x. else break; } if(y==0) cout<<"y can be represented in terms of the power of x."; else cout<<"y cannot be represented in terms of the power of x."; return 0; }
위 내용은 C++는 숫자의 거듭제곱을 나타냅니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!