【输入形式】两个整数,第一个为num的值,第二个为底数k的值,用空格隔开
【输出形式】一个整数,表示指数,满足k的x次方等于num。
【样例输入1】
32 2
【样例输出1】
5
【样例说明】整数32为2的5次方。32=22222
【数据规模与约定】num不超过10000000。
【输入形式】两个整数,第一个为num的值,第二个为底数k的值,用空格隔开
【输出形式】一个整数,表示指数,满足k的x次方等于num。
【样例输入1】
32 2
【样例输出1】
5
【样例说明】整数32为2的5次方。32=22222
【数据规模与约定】num不超过10000000。
供参考:
#include <stdio.h>
int exponent(int num, int k)
{
int cnt = 0, sign_n = 1, sign_k = 1;
if (num == 0 || k == 0)
return cnt;
if (num < 0) {
num = -num;
sign_n = -1;
}
if (k < 0) {
k = -k;
sign_k = -1;
}
while (num != 1)
{
if (num % k == 0)
{
num /= k;
cnt++;
}
else {
cnt = 0;
break;
}
}
if (cnt == 0) {
return cnt;
}
else if (cnt % 2 != 0) {
if ((sign_n == -1) || (sign_n == 1 && sign_k == 1))
{
return cnt;
}
else {
return 0;
}
}
else {
if (sign_k == -1 && sign_n == 1) {
return 0;
}
else {
return cnt;
}
}
}
int main()
{
int n = 32, k = 2, c = 0;
c = exponent(n, k);
printf("%d", c);
return 0;
}