标签:
找出步數與距離的關係即可得解。
1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 #define ERROR 1e-10 5 using namespace std; 6 int main(){ 7 int n, x, y; 8 int dis, step; 9 while( scanf( "%d", &n ) != EOF ){ 10 for( int i = 0 ; i < n ; i++ ){ 11 scanf( "%d%d", &x, &y ); 12 13 dis = y-x; 14 if( dis == 0 ){ 15 printf( "0\n" ); 16 continue; 17 } 18 19 step = (int)(sqrt((double)dis)+ERROR); 20 if( step * step == dis ) step = step * 2 - 1; 21 else if( step * step + step < dis ) step = step * 2 + 1; 22 else step = step * 2; 23 24 printf( "%d\n", step ); 25 } 26 } 27 return 0; 28 }
另:
1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 int x, y; 7 int testCases; 8 int min_steps = 0; 9 cin >> testCases; 10 while(testCases --) 11 { 12 cin >> x >> y; 13 int difference = y - x; 14 min_steps = 0; 15 16 if(difference != 0) 17 { 18 int sumOfSteps = 0; 19 int z = 2; //divided by 2, it represents the size if the next step 20 21 while(difference > sumOfSteps) 22 { 23 sumOfSteps += (z / 2); // next step 24 min_steps ++; 25 z++; 26 } 27 } 28 cout << min_steps << endl; 29 } 30 return 0; 31 }
1 #include<cstdio> 2 #include<cmath> 3 4 int main(void) 5 { 6 int t, x, y, diff, n; 7 scanf("%d", &t); 8 while (t--) 9 { 10 scanf("%d%d", &x, &y); 11 diff = y - x; 12 if (diff == 0) 13 puts("0"); 14 else 15 { 16 n = (int)sqrt(diff); 17 diff -= n * n; 18 if (diff == 0) 19 printf("%d\n", (n << 1) - 1); 20 else if (diff <= n) 21 printf("%d\n", n << 1); 22 else 23 printf("%d\n", (n << 1) + 1); 24 } 25 } 26 return 0; 27 }
标签:
原文地址:http://www.cnblogs.com/aze-003/p/5143222.html