經典 ACM 入門題:給定三邊長,判斷能否構成直角三角形。核心是**勾股定理**:找出最長邊作為斜邊 c,驗證 a² + b² == c²。多組測試用例,以 0 0 0 結束。
a, b, c,若全 0 退出。c = max(a,b,c),a,b 為其餘兩邊。a*a + b*b == c*c,輸出 right 或 wrong。#includeint main() { int a, b, c, t; while (scanf("%d %d %d", &a, &b, &c) == 3) { if (a == 0 && b == 0 && c == 0) break; // 簡單三數排序,確保 c 最大 if (a > b) { t = a; a = b; b = t; } if (a > c) { t = a; a = c; c = t; } if (b > c) { t = b; b = c; c = t; } if (a*a + b*b == c*c) printf("right\n"); else printf("wrong\n"); } return 0; }
while (scanf(...) == 3) 標準多用例讀取模式。int 足夠:邊長 < 30000,平方 < 9e8,int (21e) 安全。right/wrong,每行獨佔。輸入: 6 8 10 25 52 60 5 12 13 0 0 0 輸出: right wrong right
EPS 容差判斷 fabs(a*a+b*b-c*c) < EPS。long long 或大整數庫避免溢出。a²+b² > c² 銳,< 鈍。a=m²-n², b=2mn, c=m²+n²。這道題是「讀入→排序→數學判斷→輸出」標準流程的完美練翋。掌握三數排序小技巧、循環讀取終止條件、勾股定理整數運算,即可秒殺同類幾何判斷題。