AcWing 1205. 买不到的数目
如果不知道公式的话,可以用打表的方法来找一下规律。
打表代码:
#include<iostream>
using namespace std;
bool dfs(int i,int n,int m)
{
if(i==0)return true;
if(i>=n&&dfs(i-n,n,m))return true;
if(i>=m&&dfs(i-m,n,m))return true;
return false ;
}
int main()
{
int n,m,i,res;
cin>>n>>m;
for( i=1;i<=1000;i++)
{
if(!dfs(i,n,m))res=i;
}
cout<<res<<endl;
}
当然,仅仅靠暴搜是不能ac的,因为i的上限不好确定,容易超时。
因为如果 a,b 均是正整数且互质,那么由 ax+by,x≥0,y≥0 不能凑出的最大数是 (a−1)(b−1)−1。
所以只要输出a*b-a-b即可。

查看9道真题和解析