算法1
思路:公式法
如果提前知道两个数a,b互质,那么由ax+by,x>=0&&y>=0,不能凑出的最大数是ab-a-b
C++ 代码
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int p,q;
cin>>p>>q;
cout<<(p-1)*(q-1)-1<<endl;//!!关键
return 0;
}
算法2
思路:暴力,说实话,我没看懂,没明白打表求,看看就可以了,样例能过4个
C++ 代码
#include<iostream>
#include<cstdio>
using namespace std;
bool dfs(int m,int p,int q){
if(!m)return true;
if(m>=p&&dfs(m-p,p,q))return true;
if(m>=q &&dfs(m-q,p,q))return true;
return false;
}
int main(){
int p ,q;
cin>>p>>q;
int res=0;
for(int i=1;i<=1000;i++){
if(!dfs(i,p,q))res=i;
}
cout<<res<<endl;
return 0;
}