zoukankan      html  css  js  c++  java
  • 历年试题——买不到的数目

    问题描述

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

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

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

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

    输入格式

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

    输出格式

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

    样例输入1

    4 7

    样例输出1

    17

    样例输入2

    3 5

    样例输出2

    7
     
    //买不到的数目 自己理解后打出来的 
     //利用输入a b 循环相乘又不能超过n(我们定义的比较大的数)
     //然后用数组标记可以买到的数 标记为1 不能买默认都是0 
     //最后遍历数组 如果有连续的a 是可以买到的 那 减去a最近的不能买到 标记为
     //0的那个数值就是 最大买不到数目  其中a要保证是小的那个输入数就行了 
     /*
    #include <iostream>
    #include <algorithm>
    #include <cstring>
    #include <cmath>
    using namespace std;
    long long n=100000;
    
    int d,x;
    
    int cha(int a[])
    {
        int sum=0;
        for(int i=0;i<n;i++)
        {
            if(a[i]==1)
            {
                sum++;
                if(sum>=x) return i-x;//如果连续都可以买到 那减去x就是不能买的数目 
            }
            else
            {
                sum=0;
            }
        }
        return -1;
    }
    
    
    void f(int a,int b)
    {
        int c[n];
        for(int i=0;i<n/a;i++)  //为了确保后面的乘a b 不会溢出 
        for(int j=0;j<(n-i*a)/b;j++)
        {
            if(i*a+b*j < n) c[i*a+j*b] =1;//表示可以找到糖果 
            
        }
        
        cout << cha(c);
    
    } 
    
    int main()
    {
        cin >> x >> d;
        if(x>d)
        {
            int t=x;
            x=d;
            d=t;
        }
        f(x,d);
        
    } 
    实现代码
  • 相关阅读:
    GJM: Unity3D AssetBundle 手记 [转载]
    GJM: Unity3D基于Socket通讯例子 [转载]
    GJM:用C#实现网络爬虫(二) [转载]
    JSONP(跨域请求) —— 一种非官方跨域数据交互协议
    经典布局之圣杯布局 —— 左右定宽,中间流式
    js中的callback(阻塞同步或异步时使用)
    Emmet:HTML/CSS代码快速编写神器
    CSS弹性盒模型 box-flex
    JSON对象的stringify()和parse()方法
    懒加载 lazy load
  • 原文地址:https://www.cnblogs.com/xieyupeng/p/7465482.html
Copyright © 2011-2022 走看看