ACM/ICPC ZOJ1003-Crashing Balloon 解题代码
#include <iostream> using namespace std; int main() { int **array = new int *[100]; for ( int i = 0; i < 100; i++ ) { array[i] = new int[2]; } int x, y; int t=0; while( cin >> x >> y ) { array[t][0] = x; array[t][1] = y; t++; } for ( int i = 0; i < t; i++ ) { int win; int t1 = 0, t2 = 0; if ( array[i][0] <=100 && array[i][1] <=100 ) { win = array[i][0]; if ( win < array[i][1]) { win = array[i][1]; } } else { int *p1 = new int[1000]; int *p2 = new int[1000]; for ( int j = 2; (j < array[i][0]/2) && (j < 101); j++ ) { if ( array[i][0]%j == 0 && array[i][0]/j <=100 && array[i][0]/j != j ) { p1[t1] = j; t1++; //cout << j << endl; } } for ( int j = 2; (j < array[i][1]/2) && (j < 101); j++ ) { if ( (array[i][1]%j == 0) && (array[i][1]/j <=100) && array[i][1]/j != j ) { p2[t2] = j; t2++; //cout << j << endl; } } if ( array[i][0] > 100 && array[i][1] > 100 && t1 == 0 && t2 == 0 ) { win = array[i][0]; if ( win < array[i][1] ) { win = array[i][1]; } } else if (array[i][0] > 100 && array[i][1] > 100 && t1 == 0 && t2 != 0) { win = array[i][1]; } else if (array[i][0] > 100 && array[i][1] > 100 && t1 != 0 && t2 == 0) { win = array[i][0]; } else if (array[i][0] > 100 && array[i][1] > 100 && t1 == 2 && t2 == 2 ) { int m; for ( m = 0; m < 2; m++ ) { if ( p1[m] == p2[0] || p1[m] == p2[1]) { break; } } if ( m == 2 ) { win = array[i][0]; if ( win < array[i][1] ) { win = array[i][1]; } } else { win = array[i][0]; if ( win > array[i][1] ) { win = array[i][1]; } } } } cout << win << endl; } return 0; }