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;
}

  

posted @ 2013-07-08 20:11  2011winseu  阅读(265)  评论(0编辑  收藏  举报