我正在处理一个编码问题,作为它的子部分,我遇到了这个问题:
我们得到一个数字 x,我们将它平方,所以数字变成 x^2。现在我们有从 1 到 x^2 的数字,例如: if number=4; 那么 4^2=16
1 ----->1
2 3 ----->2
4 5 6 ----->3
7 8 9 10 ----->4
11 12 13 ----->5
14 15 ----->6
16 ----->7
现在给我一个数字说 k,我需要告诉它属于哪个组。这里 8 属于第 4 组。
我的想法是从 1 开始并保持计数初始化为 1 并检查 1<8 是否?如果是,则将 2 加到 1(上一个总和),将计数增加到 2 并检查 3<8 是否?如果是,则将 3 添加到 3(上一个总和),将计数增加到 3 并检查是否 6<8 如果是,则将 4 添加到 6,将计数增加到 4 并检查是否 10<9?如果没有,则退出。所以组号。是计数,即 4。
但是有什么比我的方法更快的方法吗?
编辑 1: 我忘了在我的算法中提到,当计数达到给定数字(在上一个示例中为 4)时,我不应该添加 5,而是添加 3。例如:
如果要搜索的数字是 14,那么
1<14 yes then add 2
3<14 yes then add 3
6<14 yes then add 4
10<14 yes then add **3** ---->here I need to add 3 instead of 5
13<14 yes then add **2** ---->here I need to add 2 instead of 6
15<14 No so output count.
可以使用 if 条件添加 3 而不是 5,但是是否有任何方法可以根据 x 的值自动增加然后减少要添加的值(请参阅上面的示例以了解 x 指的是什么)