思路
当其中有两个数为0时,直接输出0。
当其中有一个数为0时,如果剩下两个数相等,那么只用切一刀。
如果不相等,那么只用切两刀。
如果三个数中有两个数相等,只用切两刀。
…
算法1
(找规律) $O(n)$
C++ 代码
#include <bits/stdc++.h>
using namespace std ;
const int N = 1e4 + 5 ;
int t ;
int main ( ) {
cin >> t ;
for ( int i = 1 ; i <= t ; i ++ ) {
int a , b , c ;
cin >> a >> b >> c ;
if ( a + b == 0 || b + c == 0 || a + c == 0 ) {
cout << 0 << endl ;
continue ;
}
if ( a == 0 || c == 0 || b == 0 ) {
if ( a == 0 ) {
if ( b == c ) {
cout << 1 << endl ;
continue ;
}
else {
cout << 2 << endl ;
continue ;
}
}
if ( b == 0 ) {
if ( a == c ) {
cout << 1 << endl ;
continue ;
}
else {
cout << 2 << endl ;
continue ;
}
}
if ( c == 0 ) {
if ( b == a ) {
cout << 1 << endl ;
continue ;
}
else {
cout << 2 << endl ;
continue ;
}
}
}
if ( a == c || b == c || a == b ) {
cout << 2 << endl ;
continue ;
}
if ( a + b == c || a + c == b || c + b == a ) cout << 2 << endl ;
else cout << 3 << endl ;
}
return 0 ;
}