fork download
  1. //PLUS ULTRA
  2.  
  3.  
  4. #include<bits/stdc++.h>
  5. using namespace std;
  6.  
  7.  
  8. #define SPEED ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)
  9. #define pb push_back
  10. #define forn(i,st,n) for(int i = st; i < n ; i++)
  11. #define nfor(i,st,n) for(int i = st; i >= n ; i--)
  12. #define ss second
  13. #define ff first
  14. #define ll long long
  15.  
  16. typedef pair <int , int> pii;
  17.  
  18. const int N = 1e5 + 10 , mod = 1000000007;
  19.  
  20. bool fun(std::vector<int> a , std::vector<int> b , int x , int y){
  21. if(a[x] != 0 && a[y] != 0 && b[x] % a[x] == 0 && b[y] % a[y] == 0 && b[x] / a[x] == b[y] / a[y] ){
  22. return true;
  23.  
  24. }else if(b[x] - a[x] == b[y] - a[y]){
  25. return true;
  26.  
  27.  
  28. }
  29.  
  30. return false;
  31.  
  32. }
  33.  
  34. int problemSolver(int a[] , int b[]);
  35.  
  36. void solve(){
  37. int a[3] , b[3];
  38. forn(i,0,3)cin >> a[i];
  39. forn(i,0,3)cin >> b[i];
  40.  
  41. int a2[3] ;
  42.  
  43. int ans = problemSolver(a , b);
  44.  
  45. a2[0] = a[0];
  46. a2[1] = a[2];
  47. a2[2] = a[1];
  48.  
  49. ans = min( ans , problemSolver(a2 , b) );
  50.  
  51. a2[0] = a[1];
  52. a2[1] = a[0];
  53. a2[2] = a[2];
  54.  
  55. ans = min(problemSolver(a2 , b) , ans);
  56.  
  57. a2[0] = a[1];
  58. a2[1] = a[2];
  59. a2[2] = a[0];
  60.  
  61. ans = min(ans , problemSolver(a2 , b));
  62.  
  63. a2[0] = a[2];
  64. a2[1] = a[0];
  65. a2[2] = a[1];
  66.  
  67. ans = min(ans , problemSolver(a2 , b));
  68.  
  69. a2[0] = a[2];
  70. a2[1] = a[1];
  71. a2[2] = a[0];
  72.  
  73. ans = min(ans , problemSolver(a2 , b));
  74.  
  75. cout << ans << "\n";
  76.  
  77. }
  78.  
  79. int problemSolver(int a[] , int b[]){
  80.  
  81. // int a[3] , b[3];
  82. // forn(i,0,3)cin >> a[i];
  83. // forn(i,0,3)cin >> b[i];
  84.  
  85. int chng = 0;
  86. std::vector<int> initial , final ;
  87. forn(i,0,3){
  88. if(a[i] != b[i]){
  89. chng++;
  90. initial.pb(a[i]);
  91. final.pb(b[i]);
  92. }
  93. }
  94.  
  95. if(chng < 2){
  96. // cout << chng << "\n";
  97. return chng;
  98. }else if(chng == 2){
  99. // if(initial[0] % a[0] == 0 && b[1] % a[1] == 0 && b[0] / a[0] == b[1] / a[1] ){
  100. // cout << "1\n";
  101.  
  102. // }else if(b[0] - a[0] == b[1] - a[0]){
  103. // cout << "1\n";
  104.  
  105.  
  106. // }else{
  107. // cout << "2\n";
  108. // }
  109.  
  110. if(fun(initial , final , 0 , 1)){
  111. // cout << "1" << "\n";
  112. return 1;
  113.  
  114.  
  115. }else if(b[0] - a[0] == b[1] - a[1]){
  116. // cout << "1\n";
  117. return 1;
  118.  
  119.  
  120. }else return 2;
  121. // cout << "2\n";
  122.  
  123.  
  124.  
  125.  
  126. }else{
  127.  
  128. bool flag = true;
  129.  
  130. forn(i,0,3){
  131. if(a[i] == 0 || b[i] % a[i] != 0 ){
  132. flag = false;
  133. }
  134. }
  135.  
  136. if(flag && b[0] / a[0] == b[1] / a[1] && b[0] / a[0] == b[2]/a[2]){
  137. // cout << "1\n";
  138. return 1;
  139. }else if(b[0] - a[0] == b[1] - a[1] && b[2] - a[2] == b[1] - a[1]){
  140. // cout << "1\n";
  141. return 1;
  142. }else {
  143. flag = false;
  144. flag = flag || fun(initial , final , 0 , 1);
  145. flag = flag || fun(initial , final , 0 , 2);
  146. flag = flag || fun(initial , final , 1 , 2);
  147.  
  148. if(flag ){
  149. // cout << "2\n";
  150. return 2;
  151. }else{
  152. // cout << "3\n";
  153. return 3;
  154. }
  155.  
  156. }
  157.  
  158.  
  159.  
  160.  
  161. }
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169. }
  170.  
  171. int main(){
  172. SPEED;
  173.  
  174.  
  175. #ifndef ONLINE_JUDGE
  176. freopen("in.txt", "r", stdin);
  177. freopen("out.txt", "w", stdout);
  178. #endif
  179.  
  180. int t = 1;
  181.  
  182. cin >> t;
  183.  
  184.  
  185. while(t--) solve();
  186.  
  187.  
  188.  
  189.  
  190. return 0;
  191. }
Success #stdin #stdout 0s 4480KB
stdin
2
3 5 7
6 5 10
8 6 3
9 7 8
stdout
1
2