ZOJ 1003 Crashing Balloon
#include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; int n,m; int flag1,flag2; void dfs(int a,int b,int x) { if(b==1) { flag2=1; if(a==1) flag1=1; } if(flag1&&flag2) return; if(x==1) return; if(a%x==0) dfs(a/x,b,x-1); if(b%x==0) dfs(a,b/x,x-1); dfs(a,b,x-1); } int main() { while(~scanf("%d%d",&n,&m)) { if(n<m) swap(n,m); flag1=0,flag2=0; dfs(n,m,100); if(flag1==0&&flag2==1) printf("%d\n",m); else printf("%d\n",n); } return 0; }