如何知道一个数字是否在组的x区间内



我需要一个算法的逻辑有问题。

我有一组"y"元素的数量,我需要把它分成另一组大小为x的元素的数量;然后看看是否有" a "元素的第二组在"第一个组

例如,如果我有这两个组

A = {1,2,3,4}

B ={1,2,3,…,100}

100/4是25,所以如果A=1和B=[1,25]或A=2和B=[25,50]等,函数应该为真

我怎样才能使算法使它具有可变的组大小?我在java上工作,但只是逻辑就足够了

提前感谢!

如果y可被x整除,则解很简单:
x/y将被视为我们所要考虑的区间的length。如果我们假设x=4y=100length == 25的四个区间:[1,25],[26,50],[51,75],[76,100](注意,这些区间是封闭的,与你的问题相反,因为如果它们是开放的,最后一个元素就不会包括在内)。
因此,算法的输入将是a(表示第a个区间)和b(1到y之间的数字)。如果b在第a个区间,则输出结果为true
bb > length * (a-1)b <= length * a之间的第a个区间。
下面的代码实现了一个函数f,即使y % x != 0也可以工作:在这种情况下,最后一个间隔将包含更多的元素(这些额外元素的数量是y%x)。

public static boolean f(int a, int b, int x, int y) {
int length = y / x;
int reminder = y % x;
if (a != x) {
reminder = 0;
}
return b > length * (a - 1) && b <= length * a + reminder;
}

你可以给函数添加额外的控件。

相关内容

  • 没有找到相关文章

最新更新