给定整数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循环,此解决方案需要太多时间才能执行。是否有人建议更好的解决方案或我应该对我的代码进行哪些修改?
答案 0 :(得分:0)
似乎你可以用等式计算。注意l是字母el。
x = int((n-l)/2)
if(!(n%2) && (n-l)%2)
{
x = x + 1
}