如果我想找到leftrange和rightrange之间奇数整数的总数,你觉得这有效吗?
示例leftrange = 3,rightrange = 8。
int FindOdd(int left, int right)
{
bool lefteven = (left % 2) ? false: true;
bool righteven = (right % 2) ? false: true;
int length = (right-left) + 1;
if (lefteven != righteven) //even length
{
return (length/2);
}
else //odd length
{
if (!lefteven)
return ((length/2) + 1);
else
return (length/2);
}
}
答案 0 :(得分:3)
这是一种笨拙的方式。更好的方法是使用整数除法:
unsigned FindOdd(unsigned a, unsigned b)
{
return b / 2 - a / 2;
}
如果b
为奇数,则不包括最终数字。为了优雅,我将这些类型改为unsigned
。