0
点赞
收藏
分享

微信扫一扫

蓝桥杯 买不到的数目 (DP&遍历模拟)


买不到的数目  


时间限制:1.0s   内存限制:256.0MB



         


问题描述



小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。

小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。

你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。

本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。



输入格式



两个正整数,表示每种包装中糖的颗数(都不多于1000)



输出格式



一个正整数,表示最大不能买到的糖数



样例输入1



4 7



样例输出1



17



样例输入2



3 5



样例输出2



7



//因为数不大,所以可以遍历找出满足条件的值。



#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#define N 1000010
using namespace std;
int dp[N];
int main()
{
	int n,m,i,j,k;
	while(scanf("%d%d",&n,&m)!=EOF)
	{
		memset(dp,0,sizeof(dp));
		dp[n]=1;dp[m]=1;
		int t=max(n,m);
		for(i=t+1;i<N;i++)
		{
			if(dp[i-n]||dp[i-m])
				dp[i]=1;
		}
		for(i=N-1;i>=0;i--)
		{
			if(!dp[i])
			{
				printf("%d\n",i);
				break;
			}
		}
	}
	return 0;
}



举报

相关推荐

0 条评论