计数表示的总和

时间:2017-01-30 17:31:07

标签: java

给定整数n,l和r,找出将n表示为两个整数A和B之和的方法的数量,使得l≤A≤B≤r。

实施例

对于n = 6,l = 2且r = 4,输出应为

countSumOfTwoRepresentations2(n, l, r) = 2.

只有两种方法可以将6写成A + B,其中2≤A≤B≤4:6 = 2 + 4和6 = 3 + 3.

解决方案:

int countSumOfTwoRepresentations2(int n, int l, int r)
{
    int count = 0;
    int n1 = l;
    int n2 = r;

    while (n1 <= n2) {
        while (n1 <= n2) {
            if (n1 + n2 == n) {
                count++;
            }
            n2--;
        }
        n1++;
        n2 = r;
    }

    return count;
}

由于2个while循环,此解决方案需要太多时间才能执行。是否有人建议更好的解决方案或我应该对我的代码进行哪些修改?

1 个答案:

答案 0 :(得分:0)

似乎你可以用等式计算。注意l是字母el。

x = int((n-l)/2)

if(!(n%2) && (n-l)%2)
{
   x = x + 1
}