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

    买不到的数目

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

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

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

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

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

    要求输出: 一个正整数,表示最大不能买到的糖数

    例如: 用户输入: 4 7 程序应该输出: 17

    再例如: 用户输入: 3 5 程序应该输出: 7

     

    看到这道题无从下手,不知道怎么做,看了别人的代码,还想了一个小时。

     1 #include<iostream>
     2 #include<cstring>
     3 using namespace std;
     4 
     5 #define maxn 1000001
     6 int a[maxn];
     7 int x,y;
     8 
     9 int piece()
    10 {
    11     int i;
    12     memset(a,0,sizeof(a));
    13     cin>>x>>y;
    14     a[0]=1;
    15     for(i=1;i<maxn;i++)
    16     {
    17         if(i>=x&&a[i-x])  //其实就用一个大数组存储,比如x=4,y=7,由a[0]=1先让a[4]=1,a[7]=1,在一点点拼凑,将
    18         {
    19             a[i]=1;      //所有可能的值都置成1     
    20         }
    21         else if(i>=y&&a[i-y])
    22         {
    23             a[i]=1;
    24         }
    25     }
    26     int s=0;
    27     for(i=1;i<maxn;i++)
    28     {
    29         if(i>s&&!a[i])
    30         {
    31             s=i;    //从而找到不可能的最大值
    32         }
    33     }
    34     return s;
    35 }
    36 
    37 int main()
    38 {
    39     printf("%d
    ",piece());
    40     return 0;
    41 }
    42 
    43 //想明白了其实思路很简单,只是我无法用代码这么清晰的表达出来。
  • 相关阅读:
    表单的重复提交问题
    js日期操作
    spring data jpa
    Excel Xll开发资料
    Excel DNA学习笔记一
    error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏的解决方案
    点进去勿喷
    hdu1305(字典树)
    2018 Multi-University Training Contest 3
    hihocoder 1014(字典树)
  • 原文地址:https://www.cnblogs.com/youdiankun/p/3584046.html
Copyright © 2011-2022 走看看