计算将数字表示为连续数字之和的方式。说21,有3种方法可以得到它[1,2,3,4,5,6],[6,7,8]和[10,11]。
当我在互联网上寻找一些解决方案时,我来到了我无法理解的代码段。还是背后的数学理论。尽管它给出了正确的答案。
long countConsecutive(long num){
long sumOfFirstIntegers = 3;
long count = 0;
for(long i = 2 ; sumOfFirstIntegers<=num; ++i){
if((i%2==0)?(num%i==i/2): (num%i==0)){
++count;
}
sumOfFirstIntegers+=i+1;
}
return count;
}
答案 0 :(得分:1)
与数学无关,这可能是引起您头痛的行:
if((i%2==0)?(num%i==i/2): (num%i==0)) {
一个人可以这样重写:
bool condition;
if (i%2 == 0) {
condition = num%i == i/2;
} else {
condition = num%&i == 0;
}
if (condition) { ++count; }
因此ternary operator用于选择布尔条件,而%是modulo operator。
对于所有这些内容的数学运算,我委托给geeksforce。