N的倍数
问题描述 :
任意给定一个自然数N,寻找一个M,要求M是N的倍数,且它的所有各位数字都是由0或1组成,并要求M尽可能小。
输入说明 :
输入多组测试数据,每组测试数据仅占一行,每行仅包括一个正整数N(1≤N≤100)
输出说明 :
每组运算结果为一个整数,即N的倍数M。
输入范例 :
1
2
输出范例 :
1
10
算法思想
说到底本题就是二叉树的层次遍历,以 1 为根,其他子节点分别为 0 和 1;
定义一个队列,实现遍历;
参考代码
void func(int n)
{
int x, queue[MAX_SIZE], front = 0, rear = 0, num;
queue[front++] = 1; // 1入队
while (front != rear)
{
num = queue[rear++]; //出队
if (num % n == 0)
{
printf("%d\n", num);
return;
}
else
{
queue[front++] = num * 10;
queue[front++] = num * 10 + 1;
}
}
}
来源:CSDN
作者:JinyangDing
链接:https://blog.csdn.net/qq_37264387/article/details/104819480