4301786 2006-02-02 05:29:25 Accepted 0.023 Minimum 28565 C++ 10233 - Dermuba Triangle {{{~cpp #include #include using namespace std; void process(int num1, int num2) { cout.setf(ios::fixed, ios::floatfield); cout.setf(ios::showpoint); cout.precision(3); double num1_x, num1_y, num2_x, num2_y, height = sqrt(3)/2, temp; int i; for(i = 0; num1 - i > 0; i +=2) { num1 -= i; if(i == 0) i++; } i /= 2; if(i != 0) num1 -= i + 1; else num1 = 0; num1_x = num1 *0.5; temp = i; if(i !=0) { num1_y = height*(temp-1.0/3.0); if((i + num1)%2 == 0) num1_y += height/3; } else num1_y = 0; for(i = 0; num2 - i > 0; i +=2) { num2 -= i; if(i == 0) i++; } i /= 2; if(i != 0) num2 -= i + 1; else num2 = 0; num2_x = num2 *0.5; temp = i; if(i !=0) { num2_y = height*(temp-1.0/3.0); if((i + num2)%2 == 0) num2_y += height/3; } else num2_y = 0; num1_x -= num2_x; num1_y -= num2_y; cout << sqrt(pow(num1_x,2) + pow(num1_y,2)) << endl; } int main() { // cout << sqrt(pow(sqrt(3)*5/6,2) + 0.25); int num1, num2; while(cin >> num1 >> num2) process(num1,num2); return 0; } }}}