⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1003b.cpp

📁 平时acm训练时ac的源代码
💻 CPP
字号:
#include <iostream> 
#include <cmath> 
using namespace std; 

const int MAX = 100; 
bool UsedBalloon[MAX+1]; 

bool CanFactor(int i, int b) 
{ 
if (b == 1) { 
return true; 
} else { 
while (i <= MAX) { // find a possible factor of b 
if ( (!UsedBalloon[i]) && ((b % i) == 0) ) { 
break; 
} else { 
i++; 
} 
} 
if (i > MAX) return false; 

// try the factor i 
if (CanFactor(i+1, b / i)) { 
return true; 
} else { 
// i can not be a factor 
return CanFactor(i + 1, b); 
} 
} 
} 

bool IsPossible(int i, int a, int b) 
{ 
if (i > MAX) return false; 
if (a == 1) return (CanFactor(1, b)); // try to factor b 

while (i <= MAX) { // find a possible factor of a 
if ((a % i) == 0) { 
break; 
} else { 
i++; 
} 
} 
if (i > MAX) return false; 
UsedBalloon[i] = true; 
if (IsPossible(i + 1, a / i, b)) return true; // try a factor i of a 
UsedBalloon[i] = false; 
return (IsPossible(i + 1, a, b)); // try not use i as factor of a 

} 

int GetWinner(int a, int b) 
{ 
for (int i = 0; i < MAX + 1; i++) { 
UsedBalloon[i] = false; 
} 

if (a < b) { // make sure b is the chanllenge 
int tmp = a; 
a = b; 
b = tmp; 
} 
if ((CanFactor(1, b) == false) && (b > 100)) { // chanllenge is lying. 
return a; 
} else if (IsPossible(1, a, b)) { // is it possible? 
return a; // chanllenge fail. 
} else { 
return b; // it's impossible, chanllenge win. 
} 
} 

int main() 
{ 
int a, b; 

while (cin >> a >> b) { 
cout << GetWinner(a, b) << endl; 
} 
return 0; 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -