这个题目实际上比较简单,只是想不到更加优化的方法。需要将高达10000000的数组进行赋值。只有穷举,没有别的方法。
#include <stdio.H>
#include <stdlib.h>
#define max 100000000
int main()
{
int m,n;
scanf("%d %d",&m,&n);
int *p;
p=(int *)malloc(sizeof(int)*max);//开辟空间,建立一张0,1表
p[0]=1;//初始化
for(int i=1;i<max;i++)
{
p[i]=0;//初始化
if(i>=m&&p[i-m]) p[i]=1;//在i上有数 在i+m上面必有数
if(i>=n&&p[i-n]) p[i]=1;//在i上有数 在i+n上面必有数
}
int kk=0;
for(i=0;i<max;i++)
{
if(i>kk&&!p[i])
kk=i;
}
printf("%d",kk);
printf("\n");
return 0;
}