不用循环也可以做到这一点
本文关键字:这一点 也可以 循环 | 更新日期: 2023-09-27 18:05:20
我很难想出一个不涉及循环的解决方案。基本上,如果某个数大于任意数,它就会循环。假设64是这个数字。
0 => 0
32 => 32
64 => 64
96 => 32
128 => 64
160 => 32
192 => 64
等等。
我目前做的方法包括一个while循环,检查值是否超过64,如果是,从它减去64。有没有别的不涉及循环的方法?
对值取64,这是一个0(1)操作。这样的:
int number;
// number is initialized
number %= 64;
public static int filterNumber(int x, int arbitraryNumber) {
if (x < arbitraryNumber) {
return x;
}
int result = x % arbitraryNumber;
if (result == 0) {
return arbitraryNumber;
}
return result;
}
在64可整除的情况下,单独取模不起作用。
if (number == 0)
return 0;
var mod = number % 64;
return (mod == 0) ? 64 : mod;
return n == 0 ? 0 :
n % 64 == 0 ? 64 :
n % 32 == 0 ? 32 :
-1; // you have not specified this case in your examples!