根据大小对数字范围进行分区,然后找到该范围内给定数字的分区的起点

时间:2013-01-06 20:03:14

标签: c# algorithm linq

很抱歉,如果之前已经提出过这个问题,但我找不到与我想要做的事情相匹配。

我正在寻找一种算法来在C#(或相关的LINQ扩展)中执行以下操作。

给出一组数字(例如56 of 1 to 245)中的数字,但不排除任何数字 和分区大小(例如10) 我想找到给定数字所在的分区的起始编号。

实施例: 正在搜索56的起始页。

1-10
11-20
21-30
31-40
41-50 
51-60 <-- 56 is in the partition starting with 51
..
231-240
241-245

2 个答案:

答案 0 :(得分:4)

int page = 56;
int partition_size = 10;

int starting_number = (page / partition_size) * partition_size + 1;

答案 1 :(得分:1)

在VB.Net中有一个名为DivRem的Math函数,它将两个实数除以后给出余数。这与其他解决方案基本相同,但是当您使用内置数学函数时,它会扩展您的视野。

        Dim startingindex, inputparam, delta As Integer
        delta = 10
        inputparam = 56
        startingindex = inputparam - Math.DivRem(inputparam, delta, startingindex)

结果是:startingindex = 51