我需要用C语言编写一个程序来解决以下问题,但问题是我不能使用循环、条件或任何预定义的C函数
您将获得三个数字a∣b、a∣c和b∣c,其中∣表示逻辑运算符or.例如,3∣5=011∣101=111=7.系统将提示您在输出中打印a、b和c这三个数字.
显然,这个问题不一定有唯一的答案,您只需要输出一个有效的答案.
示例:
input: 5 7 7
output: 1 4 7
我试图将十进制输入的数字转换为二进制,但不使用循环就无法做到.
我需要用C语言编写一个程序来解决以下问题,但问题是我不能使用循环、条件或任何预定义的C函数
您将获得三个数字a∣b、a∣c和b∣c,其中∣表示逻辑运算符or.例如,3∣5=011∣101=111=7.系统将提示您在输出中打印a、b和c这三个数字.
显然,这个问题不一定有唯一的答案,您只需要输出一个有效的答案.
示例:
input: 5 7 7
output: 1 4 7
我试图将十进制输入的数字转换为二进制,但不使用循环就无法做到.
一次一点地看这个问题.定义d = a | b
、e = a | c
、f = b | c
.
如果{d
,e
,f
}的三个都是0,那么我们知道{a
,b
,c
}也都是0.
如果{d
,e
,f
}中恰好有两个为0,这是不可能的,因 for each 变量{a
,b
,c
}将迫使{d
,e
,f
}中的两个为1.
如果{d
,e
,f
}中恰好有一个为0,则{a
,b
,c
}中恰好有一个为1,其余为0.
如果{d
,e
,f
}中的任何一个都不是0,那么它在任何两个或三个可以为1的{a
,b
,c
}中是不明确的.
它足以解决:a = d & e
,b = d & f
,c = e & f
.