AcWing1205 买不到的数目
不知道公式:尽力分析:(n,m)>1就没有解,比如(6,2)=2,那么所以能凑出来的数一定是2的倍数,那不是2的倍数一定凑不出来。
打表找规律(考试技巧)怎么写暴搜
3.只要p,q是互质的正整数,不能由p和q凑出来的最大正整数是p*q-p-q
//AcWing1205 买不到的数目
//暴搜,怎么打表看规律
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
bool dfs(int i,int n,int m)
{
if(!i) return true; //i=0
if(i>=n&&dfs(i-n,n,m)) return true;
if(i>=m&&dfs(i-m,n,m)) return true;//i不断的要么减去n要么减去m指导i能减到0,说明i能凑出来
return false;
}
int main()
{
int n,m;
cin>>n>>m;
int res=0;
for(int i=1;i<=1000;i++)
{
if(!dfs(i,n,m)) res=i;
}
cout<<res;
return 0;
}
//AcWing1205 买不到的数目
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
cout<<n*m-n-m;
return 0;
}
AcWing1211 蚂蚁感冒
相遇后两个蚂蚁都掉头相当于两个蚂蚁都没调头!!!
//AcWing1211 蚂蚁感冒
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int x[105];
int main()
{
int n,f,t;
cin>>n>>f;
n--;
for(int i=0;i<n;i++)
{
cin>>t;
if(t>0)
{
x[t]=1;
}
else
{
x[-t]=-1;
}
}
// for(int i=0;i<30;i++)
// cout<<i<<' '<<x[i]<<endl;
int flag=0,res=1;
if(f>0)//朝后走
{
for(int i=f+1;i<105;i++)
{
if(x[i]==-1)//后边遇到朝前走的
{
res++;//感冒
flag=1;//有感冒蚂蚁超前走
}
}
if(flag==1)
{
for(int i=0;i<f;i++)
{
if(x[i]==1)//超后走
{
res++;
}
}
}
}
if(f<0)//朝前走
{
for(int i=0;i<(-f);i++)//前边蚂蚁朝后走
{
if(x[i]==1)
{
//cout<<"*"<<endl;
res++;
flag=1;
}
}
if(flag==1)
{
for(int i=(-f)+1;i<105;i++)
{
if(x[i]==-1)
{
res++;
}
}
}
}
printf("%d",res);
return 0;
}
AcWing1216 饮料换购
//AcWing1216 饮料换购
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
int n;
cin>>n;
int res=n;
while(n>=3)
{
res+=(n/3);
n=n%3+n/3;
}
printf("%d",res);
return 0;
}