我的解题思路是看在1~100的数能不能组成 n*m 但是就是wa!! 大牛求助呀。。。
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1003
#include<stdio.h>
#include<string.h>
int q1,q;
int visit[105];
int a[105];
long long max(long long x,long long y)
{
if(x>y)
return x;
else
return y;
}
long long min(long long x,long long y)
{
if(x<y)
return x;
else
return y;
}
void dfs(long long x,int k)
{
if(q==1)
return ;
long long i;
if(x==1)
{
q=1;
/*for(i=0;i<k;i++)
printf("%d *",a[i]);
printf("\n");*/
return ;
}
for(i=1;i<=100;i++)
{
if(x%i==0&&visit[i]==0 )
{
visit[i]=1;
a[k]=i;
k++;
dfs(x/i,k);
k--;
visit[i]=0;
}
}
}
int main()
{
long long n,m;
while(scanf("%lld%lld",&n,&m)==2)
{
q=0;
memset(visit,0,sizeof(visit));
dfs(n*m,0);
if(q==0)
printf("%lld\n",min(n,m));
else
printf("%lld\n",max(n,m));
}
return 0;
}