1996年分区联赛提高组之四 砝码称…

该博客探讨了一个利用不同重量砝码(1g至20g)进行组合称重的问题,旨在找出能称出的不同重量数量。输入为每种砝码的数量,输出为可能称出的重量个数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Description

设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重<=1000), 
要求: 
输入方式:a1 a2 a3 a4 a5 a6 
(表示1g砝码有a1个,2g砝码有a2个,…,20g砝码有a6个) 
输出方式:N 
(N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况) 

Input

 

Output

 

Sample Input

 

1 1 0 0 0 0 

 

Sample Output

 

3  表示可以称出1g,2g,3g三种不同的重量。


解题思路:用枚举的方法,六重循环,一一枚举,最后统计输出即可。

程序:
const
  maxm=1000;
var
  a,s:array[0..maxm]of longint;
  i1,i2,i3,i4,i5,i6,ans:longint;
begin
  for i1:=1 to 6 do
    read(s[i1]);
  for i1:=0 to s[1] do
    for i2:=0 to s[2] do
       for i3:=0 to s[3] do
         for i4:=0 to s[4] do
           for i5:=0 to s[5] do
             for i6:=0 to s[6] do
               if a[i1+i2*2+i3*3+i4*5+i5*10+i6*20]=0 then inc(a[i1+i2*2+i3*3+i4*5+i5*10+i6*20]);
  for i1:=1 to maxm do
    if a[i1]>0 then inc(ans);
  writeln(ans);
end.


版权属于: Chris
原文地址: http://blog.sina.com.cn/s/blog_83ac6af80102vb7f.html
转载时必须以链接形式注明原始出处及本声明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值