刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

组合

题目描述:

某商家将一种汤圆按照数量不同,分装成N种规格来售卖。这样的售卖方式会限制一些数量的汤圆不能买到。

例如:

N=2,2种规格的汤圆分别装3个和5个,这种情况下限制了1,2,4,7四种数量的汤圆不能买到。

给出N及N种规格的汤圆数量,请计算出有多少种数量的汤圆不能买到,如果有无限种数量的汤圆不能买到就输出“-1”。

输入描述:

第一行输入一个正整数N(1<N<20),表示有N种规格的汤圆

第二行输入N个各不相同的正整数(1<正整数<100),表示每种规格的汤圆数量,且正整数之间以一个空格隔开

输出描述:

输出在这种情况下有多少种汤圆数量是不能买到的,如果有无限种数量的汤圆不能买到就输出“-1”


样例输入:

2
3 5

样例输出:

4

使用微信搜索喵呜刷题,轻松应对考试!

答案:

首先,根据题目描述,我们需要计算有多少种数量的汤圆不能买到。这个问题可以通过“中国剩余定理”(Chinese Remainder Theorem)来解决。然而,在这个特定的问题中,由于汤圆的数量在1到100之间,并且数量都互不相同,因此我们可以直接遍历所有可能的汤圆数量,检查它们是否可以通过某种组合方式得到。我们可以使用Python编写一个程序来解决这个问题。首先,我们读取N和N种规格的汤圆数量,然后遍历所有可能的汤圆数量,检查它们是否可以被买到。```pythondef count_unavailable_glutinous_rice_balls(N, glutinous_rice_ball_counts):unavailable_counts = set()for i in range(1, 101):is_available = Truefor j in range(N):if i % glutinous_rice_ball_counts[j] != 0:is_available = Falsebreakif is_available:unavailable_counts.add(i)if len(unavailable_counts) == 100:return -1else:return len(unavailable_counts)N = int(input().strip())glutinous_rice_ball_counts = list(map(int, input().strip().split()))print(count_unavailable_glutinous_rice_balls(N, glutinous_rice_ball_counts))```

解析:

【喵呜刷题小喵解析】:
这个问题实际上是求“中国剩余定理”的一个变种。不过,由于汤圆数量范围在1到100之间,且都是互不相同的正整数,我们可以直接遍历所有可能的数量,并检查它们是否可以被买到。

在这个解决方案中,我们定义了一个函数`count_unavailable_glutinous_rice_balls`,它接受N和N种规格的汤圆数量作为输入,并返回不能买到的汤圆数量的数量。在函数内部,我们首先初始化一个集合`unavailable_counts`来保存不能买到的汤圆数量。然后,我们遍历所有可能的汤圆数量(从1到100),对于每个数量,我们检查它是否可以被买到。如果可以被买到,我们就把它添加到`unavailable_counts`集合中。最后,我们检查`unavailable_counts`集合的大小。如果它等于100,说明有无限种数量的汤圆不能买到,我们返回-1。否则,我们返回`unavailable_counts`集合的大小,即不能买到的汤圆数量的数量。

在主程序中,我们首先读取N和N种规格的汤圆数量,然后调用`count_unavailable_glutinous_rice_balls`函数,并打印结果。
创作类型:
原创

本文链接:组合 题目描述: 某商家将一种汤圆按照数量不同,分装成N种规格来售卖。这样的售卖方式会限制一些数量的

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share