zoukankan      html  css  js  c++  java
  • 蓝桥杯_买不到的数目

    蓝桥杯_买不到的数目

    问题描述

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

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

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

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

    输入格式

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

    输出格式

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

    样例输入1

    4 7

    样例输出1

    17

    样例输入2

    3 5

    样例输出2

    7

    思路

    这道题拿到有点懵,完全不知道该怎么用动态规划,于是秉持着遇事不决,暴力解决的思想,直接暴力;

    这道题是求最大值,那么暴力也要有边界呀,我设置暴力的边界为两个整数的乘积;

    但是为什么设置乘积为上限呢,emmm我猜的,我尝试手写了几个,发现大于乘积的数都可以被表示,于是就这样设置了;

    然后设置两个系数,我设置每个数字乘以0-100再相加,把得到的结果的位置设置为1,这样再从大往小搜索到第一个数字作为结果;这样对于值小的数字应该可以覆盖了,比如4和7;

    这样做有66%的正确率,也就是3个例子能对2个,另外一个应该是范围没有覆盖到,代码如下:

    #include <bits/stdc++.h>
    using namespace std;
    
    using namespace std;
    
    class Solution {
    public:
    	int solve();
    };
    
    int Solution::solve() {
    	int m, n;
    	cin>>m>>n;
    
    	int *res = NULL;
    	res = new int[100*(m+n)];
    	memset(res, 0, 100*(m+n)*sizeof(int));
    	
    	for (int i=0; i<100; i++) {
    		for (int j=0; j<100; j++) {
    			res[m*i+n*j] = true; 
    		}
    	}
    	for (int i=m*n; i>0; i--) {
    		if (!res[i]){
    			return i;
    		}
    	}
    	return -1;
    }
    
    int main(void) {
    	Solution su;
    	cout<<su.solve()<<endl;
    }
    

    然后去网上找一找正确答案,发现这是一个数论问题的结论,有一个什么裴蜀定理的,经过证明可知: 对任何整数a、b和它们的最大公约数d,关于未知数x和y的线性丢番图方程(称为裴蜀等式): !@#¥%……&*

    翻译过来就是说答案是m*n-m-n:

    事实证明程序员还是应该研究数学,有了数学结果这个问题很容易就解决了,而且是100%,呜呜呜呜:

    #include <bits/stdc++.h>
    using namespace std;
    
    int main(void) {
    	int m, n;
    	cin>>m>>n;
    	cout<<m*n-m-n<<endl;	
    	return 0;
    }
    
  • 相关阅读:
    Allow Zero Length 允许空字符串 ACCESS
    数据集永久字段的Visble 属性为何不起作用
    Microsoft Jet 数据库引擎 SQL 和 ANSI SQL 的比较
    Microsoft 数据访问组件 (MDAC) 的版本历史记录
    Windows 7 英文版操作系统中文软件乱码解决方法
    DBLookupComboBox 的初始值
    无法为更新定位行,一些值可能已在最后一次读取后已更改
    [hdu6428]Problem C. Calculate
    [hdu6437]Problem L. Videos
    [hdu6434]Problem I. Count
  • 原文地址:https://www.cnblogs.com/sakurapiggy/p/13216412.html
Copyright © 2011-2022 走看看