魔术定义:整数N以基数B表示,如21以基数3表示为210,那么21是基数3的一个魔术,210三个位的值都不一样。设计函数,输入参数N和B(B介于2到10之间),返回是否为魔术。
#include<stdlib.h>
char c[100];
int map[10] = {0};
int isMagicNum(int N, int B)
{
int i = 0,j, result = 1;;
while(N >= B)
{
c[i++] = N % B+'0';
if(map[ N % B] == 0)
{
map[ N % B]++;
}
else
{
result = -1;
}
N = N / B;
}
if(N != 0){
c[i++] = N +'0';
}
c[i] = '\0';
for(j = 0; j < i; i--)
{
char temp = c[j];
c[j] = c[i-1];
c[i-1] = temp;
j++;
}
printf("%s\n",c);
return result;
}
int main()
{
int t = isMagicNum(21,10);
printf("%d",t);
}