Cho hai số dương x và y, hãy kiểm tra xem y có phải là sức mạnh của x hay không.examples: & nbsp;
Examples :
Đầu vào: & nbsp; x = 10, y = 1Output: trorex^0 = 1 x = 10, y = 1
Output: True
x^0 = 1Đầu vào: & nbsp; x = 10, y = 1000Output: truex^3 = 1 x = 10, y = 1000
Output: True
x^3 = 1Đầu vào: & nbsp; x = 10, y = 1001Output: false x = 10, y = 1001
Output: False
Một giải pháp đơn giản là liên tục tính toán sức mạnh của x. Nếu một sức mạnh trở nên bằng y, thì y là một sức mạnh, thì không phải. & Nbsp; & nbsp;
C++
#include
using
namespace
std;
bool
isPower[
int
x,
long
int
#include
1
#include
2
#include
3#include
4 #include
5
#include
6#include
7 #include
8
#include
3long
int
using
2 using
3
#include
3using
5 using
6using
2 using
8
#include
6using
2 namespace
1
#include
3#include
7 using
6using
2 namespace
6
namespace
7
int
namespace
9
#include
2
#include
3std;
2
#include
3std;
4
#include
3std;
6
#include
3std;
8
#include
3#include
7 bool
1
namespace
7
Java
bool
3 bool
4 bool
5
#include
3bool
3 bool
8 bool
9 isPower[
0
#include
3#include
2
Các
Các
Các
Các
#include
3namespace
7
#include
3bool
3 bool
8 #include
08 isPower[
int
x,
int
#include
1
#include
3#include
2
#include
6#include
4 #include
18isPower[
7#include
20
#include
21#include
7 #include
23isPower[
7int
2
#include
6int
#include
28isPower[
7#include
30
#include
6using
5 #include
33
#include
21#include
35
#include
6#include
7 #include
38
#include
3namespace
7
namespace
7
Python3
#include
42 #include
43
#include
3#include
4 #include
46#include
47#include
47 isPower[
7#include
50
#include
6#include
7 #include
53#include
47#include
47 isPower[
7#include
20
#include
3using
2 #include
47 isPower[
7
#include
3using
5 using
6using
2 #include
66
#include
6using
2 #include
47 using
2 #include
71 #include
72
#include
3#include
7 using
6using
2 #include
47#include
47 #include
1
#include
4#include
81isPower[
5isPower[
6isPower[
7#include
85
#include
3#include
87using
6isPower[
7#include
20
#include
91#include
92
#include
3#include
87using
6int
1#include
20
#include
4#include
81isPower[
7isPower[
6int
7#include
85
#include
3#include
87using
6isPower[
7#include
20
#include
91#include
92
#include
3#include
87using
6int
1#include
20
#include
4#include
81x,
5isPower[
6x,
7#include
85
#include
3#include
87using
6isPower[
7#include
20
#include
91#include
92
#include
3#include
87using
6int
1#include
20
#include
4#include
81x,
5isPower[
6long
7#include
85
#include
3#include
87using
6isPower[
7#include
20
#include
91#include
92
#include
3#include
87using
6int
1#include
20
C#
using
using
53
bool
4 using
55
#include
2
#include
3bool
3 bool
8 bool
using
61int
x,
int
#include
1
#include
3#include
2
#include
6#include
4 #include
5
#include
6#include
7 #include
8
#include
3long
int
using
2 using
3
#include
6using
5 #include
33
#include
6#include
35
#include
6#include
7 #include
38
#include
3namespace
7
#include
42 #include
43
#include
3#include
2
#include
6using
95
#include
6using
97
#include
6using
99
#include
6namespace
01
#include
3namespace
7
namespace
7
#include
3#include
4 #include
46#include
47#include
47 isPower[
7#include
50
namespace
05
#include
6#include
7 #include
53#include
47#include
47 isPower[
7#include
20
#include
2
#include
3using
2 #include
47 isPower[
7
#include
3using
5 using
6using
2 #include
66
#include
6using
2 #include
47 using
2 #include
71 #include
72
#include
3#include
7 using
6using
2 #include
47#include
47 #include
1
#include
3#include
87using
6isPower[
7#include
20
using
using
53
namespace
7
bool
4 using
55
#include
3bool
3 bool
8 bool
using
61int
x,
int
#include
1
#include
6#include
4 #include
5
#include
6int
using
76
namespace
62
#include
3bool
3 bool
8 bool
9 using
91
namespace
63
PHP
#include
3#include
2
#include
6#include
4 #include
5
#include
6int
using
76
#include
6namespace
76
#include
6using
5 #include
33
#include
21#include
35
#include
6#include
7 #include
38
#include
3namespace
7
#include
6namespace
88namespace
89int
2
namespace
91namespace
92namespace
89int
2
#include
6namespace
96namespace
89int
2
#include
6std;
00namespace
89int
2
std;
03
Độ phức tạp về thời gian: O [logxy] Không gian phụ trợ: O [1] O[Logxy]
Auxiliary space: O[1]
Tối ưu hóa: & nbsp; chúng ta có thể tối ưu hóa giải pháp ở trên để làm việc trong O [nhật ký log y]. Ý tưởng là làm bình phương sức mạnh thay vì nhân nó với x, tức là so sánh y với x^2, x^4, x^8, vv. Nếu x trở nên bằng y, hãy trả về đúng. Nếu x trở thành nhiều hơn y, thì chúng ta sẽ tìm kiếm nhị phân cho sức mạnh của x giữa công suất trước và công suất hiện tại, tức là, giữa x^i và x^[i/2]. Theo dõi là bước chi tiết. & Nbsp;
We
can optimize above solution to work in O[Log Log y]. The idea is to do squaring of power instead of multiplying it with x, i.e., compare y with x^2, x^4, x^8, …etc. If x becomes equal to y, return true. If x becomes more than y, then we do binary search for power of x between previous power and current power, i.e., between x^i and x^[i/2].
Following are detailed step.
1] Initialize pow = x, i = 1 2] while [pow < y] { pow = pow*pow i *= 2 } 3] If pow == y return true; 4] Else construct an array of powers from x^i to x^[i/2] 5] Binary Search for y in array constructed in step 4. If not found, return false. Else return true.
Giải pháp thay thế: & nbsp; Ý tưởng là lấy nhật ký của y trong cơ sở x. Nếu nó hóa ra là một số nguyên, chúng ta sẽ trả về đúng. Khác sai. & Nbsp; & nbsp;
The idea is to take log of y in base x. If it turns out to
be an integer, we return true. Else false.
C++
std;
04
std;
05
using
namespace
std;
bool
isPower[
int
x,
int
#include
1
#include
2
#include
3int
std;
18std;
19std;
20____419std;
22
#include
3std;
24 std;
25std;
19std;
20std;
19std;
29
#include
3#include
7 std;
32
namespace
7
int
namespace
9
#include
2
#include
3std;
38
#include
3#include
7 bool
1
namespace
7
Java
bool
4 using
55
#include
2
#include
3bool
8 #include
08 isPower[
int
std;
51
std;
52int
#include
1
#include
3#include
2
‘
std;
62using
6int
std;
65
#include
6std;
24 std;
68
std;
69std;
70
#include
6#include
7 std;
32
#include
3namespace
7
#include
3bool
3 bool
8 bool
9 std;
80
#include
3#include
2
#include
6#include
4#include
81std;
86isPower[
6std;
88__
#include
21std;
91std;
92int
2
#include
6#include
91
#include
21std;
91std;
98int
2
#include
3namespace
7
namespace
7
Python3
bool
03 bool
04
#include
42 bool
06
#include
3bool
08#include
47 bool
10bool
11bool
11 bool
13
#include
3bool
15#include
47 bool
10bool
11 bool
13
#include
3#include
7 isPower[
7 #include
4bool
24__
#include
4 bool
32#include
47#include
47bool
35#include
92
#include
3#include
87#include
81std;
86isPower[
6std;
88bool
43
C#
using
using
53
bool
4 using
55
#include
2
#include
3bool
8 #include
08 isPower[
int
std;
51
#include
2
std;
52int
#include
1
bool
62using
6int
bool
65
‘
bool
69bool
70
#include
3#include
7 std;
32
namespace
7
int
namespace
9
#include
2
#include
3#include
4bool
81
#include
6bool
83std;
92int
2
#include
3#include
91
#include
6bool
83std;
98int
2
namespace
7
namespace
7
#include
3#include
7 bool
1
namespace
05
Java
#include
2
bool
4 using
55
#include
3bool
8 #include
08 isPower[
int
std;
51
std;
52int
#include
1
namespace
7
‘
namespace
62
#include
6std;
24 std;
68
namespace
63
#include
6#include
7 std;
32
#include
2
#include
3bool
3 bool
8 bool
9 std;
80
bool
62isPower[
35
#include
6#include
4#include
81std;
86isPower[
6std;
88__
bool
69std;
70
#include
3#include
7 std;
32
namespace
7
#include
4bool
81
#include
3isPower[
48std;
92int
2
#include
91
#include
3isPower[
48std;
98int
2
std;
03
int
namespace
9: O[1]
Auxiliary space: O[1]
#include
3#include
7 bool
1Gyayak Jain for suggesting this solution.
This article is contributed by Manish Gupta. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above