写一个方法:
public int IsXDivisibleByY(int X, int Y) { .. }
满足以下条件:
方法返回1,如果X可以除以Y没有余数。
方法返回0,如果X不能除以Y没有余数。
<解决方案strong>别包括任何条件检查(if条件、相等运算符、三元和空合并运算符等)。
<解决方案strong>别包括任何异常处理(try-catch-finally)
必须考虑到这两个参数可以给定参数类型的所有范围。
如果不满足上述任何一个条件,答案将被认为是错误的。-
使用c#。
这是我的解决方案,它只使用模数和位操作(它也使用条件检查for循环,但它可以很容易地被32显式代码块取代,为了更好看,我将省略这个)。
public int IsXDivisibleByY(int X, int Y)
{
var mod = (int)((float) X % (float) Y);
var accum = 0;
for (var i = 0; i < 32; i++)
{
accum = accum | (mod & 1);
mod = mod >> 1;
}
return accum ^ 1;
}