
19.04.2010, 01:52
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
С нами:
10386906
Репутация:
599
|
|
int x = 13, y = 14;
int z = (x + y ) >> 1;
хз можно ли сдвиги юзать.
Код:
#include <iostream>
#include <utility>
int mean (int x, int y);
int main(){
for(int i = 0; i < 1000; i++){
int x = rand(), y = rand();
int result = mean(x, y);
int expected = (x + y) / 2;
std::cout << "mean(" << x << ", " << y << ") = " << result << " Expected = " << expected << std::endl;
if( result != expected){
std::cout << "error: x = " << x << " y = " << y << " result = " << mean(x,y) << std::endl;
}
}
system("pause");
}
int mean (int x, int y){
if(x > y){
std::swap(x, y);
}
int i = 0;
for(; x + i <= y - i; i++){
if(x + i == y - i){
return x + i;
}
}
// для нечетных сумм
return x + i - 1;
}
или так. забавная задачка =)
Последний раз редактировалось Ra$cal; 19.04.2010 в 02:20..
|
|
|