7 条题解

  • 1
    @ 2025-10-19 8:14:42

    #include<bits/stdc++.h> using namespace std; int b[10010],a[100],sum; int main() { for(int i=1;i<=6;i++)cin>>a[i]; for(int t1=0;t1<=a[1];t1++){ for(int t2=0;t2<=a[2];t2++){ for(int t3=0;t3<=a[3];t3++){ for(int t4=0;t4<=a[4];t4++){ for(int t5=0;t5<=a[5];t5++){ for(int t6=0;t6<=a[6];t6++){ b[t1+2t2+3t3+5t4+10t5+20*t6]=1; } } } } } } for(int i=1;i<=10000;i++)sum+=b[i]; cout<<sum; return 0; }

    • 0
      @ 2025-10-18 14:09:12
      #include<bits/stdc++.h>
      using namespace std;
      int x1,x2,x3,x4,x5,x6,s,ans,f[10100];
      int main()
      {
      	cin>>x1>>x2>>x3>>x4>>x5>>x6;
      	for(int i=0;i<=x1;i++)
      	  for(int j=0;j<=x2;j++)
      	   for(int k=0;k<=x3;k++)
      	    for(int l=0;l<=x4;l++)
      	     for(int q=0;q<=x5;q++)
      	  	  for(int w=0;w<=x6;w++)
      	  	  {
      	  	  	s=i*1+j*2+k*3+l*5+q*10+w*20;
      	  	  		f[s]=1;
      		  }
      	for(int i=1;i<=10000;i++)if(f[i]==1)ans++;
      	cout<<ans;
      }
      
      • -1
        @ 2022-7-5 10:40:20

        【问题描述】

        设有1g,2g,3g,5g,10g,20g的砝码各若干枚(其总重≤1000g),,要求计算用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况。

        思路

        题目中已经明确仅有六个砝码,再看数据范围:总重≤1000g,则这道题可以用暴力枚举做,即O(x1x2x3x4x5*x6)的时间复杂度,再用一个桶装称出来的砝码重量

        代码

        #include <bits/stdc++.h>
        using namespace std;
        int s[10011]/*数组切记开的比10000大,否则全WA*/,k,x1,x2,x3,x4,x5,x6;
        int main()
        {
        	cin>>x1>>x2>>x3>>x4>>x5>>x6;
        	//注意枚举从0开始,因为可以不选当前砝码 
        	for(int a=0;a<=x1;a++)
               for(int b=0;b<=x2;b++)
                  for(int c=0;c<=x3;c++)
                     for(int d=0;d<=x4;d++)
        			    for(int e=0;e<=x5;e++)
        				   for(int f=0;f<=x6;f++) 
        				   //六重暴力 
                              s[a*1+b*2+c*3+d*5+e*10+f*20]++;//乘积装进桶里 
        
            for(int i=1;i<=10000;i++)
               if(s[i]!=0) k++; 
               //桶处理 
            cout<<k;
        	return 0;
        }
        

        注意事项

        数组一定得开的比10000大,否则会WA 我是不会告诉你们我在这卡了半个小时的

        • -3
          @ 2025-7-11 11:18:20
          #include<bits/stdc++.h>
          using namespace std;
          int a[10],b[1005],f[10],ans,s,t,y[10];
          int main(){
          cin>>a[1]>>a[2]>>a[3]>>a[4]>>a[5]>>a[6];
          y[1]=1;
          y[2]=2;
          y[3]=3;
          y[4]=5;
          y[5]=10;
          y[6]=20;
          while(f[0]==0){
          t=6;
          while(f[t]==a[t]&&t>=1) t--;
          f[t]++;
          for(int i=t+1;i<=6;i++) f[i]=0;
          ans=0;
          for(int i=1;i<=6;i++){
          ans+=f[i]*y[i];
          }
          b[ans]=1;
          }
          for(int i=1;i<=1000;i++)
          if(b[i]==1) s++;
          cout<<s;
          return 0;
          }
          
        • -3
          @ 2025-7-11 11:12:02
          #include<bits/stdc++.h>
          using namespace std;
          int g1,g2,g3,g4,g5,g6,f[1010],ans;
          int main(){
          	cin>>g1>>g2>>g3>>g4>>g5>>g6;
          	for(int i=0;i<=g1;i++)
          	for(int j=0;j<=g2;j++)
          	for(int x=0;x<=g3;x++)
          	for(int y=0;y<=g4;y++)
          	for(int l=0;l<=g5;l++)
          	for(int r=0;r<=g6;r++)
          	{
          		f[i+j*2+x*3+y*5+l*10+r*20]=1;
          	}
          	for(int i=1;i<=1000;i++)
          	if(f[i]==1) ans++;
          	cout<<ans;
          	return 0;
          }
          
          • -5
            @ 2022-7-5 10:42:39

            枚什么举!dp大法好!

            #include <bits/stdc++.h>
            using namespace std;
            const int cnt[] = {0, 1, 2, 3, 5, 10, 20};
            bitset<2005> ans;
            int x;
            int main() {
            	ans[0] = 1;
            	for (int i = 1; i <= 6; i ++) {
            		cin >> x;
            		for (int j = 1; j <= x; j ++)
            			ans |= ans << cnt[i];
            	}
            	cout << ans.count() - 1 << '\n';
            	return 0;
            }
            
          • -13
            @ 2022-6-1 19:21:20

            #include<bits/stdc++.h> using namespace std; long long a,b,c,d,e,f,q; bool p[1086]; int main () { cin>>a>>b>>c>>d>>e>>f; for(int i=0; i<=a; i++) for(int i2=0; i2<=b; i2++) for(int j=0; j<=c; j++) for(int j2=0; j2<=d; j2++) for(int k=0; k<=e; k++) for(int k2=0; k2<=f; k2++) p[i+i22+j3+j25+k10+k2*20]=1; for(int i=1; i<=1000; i++) if(p[i])q++; cout<<q; return 0; }

          • 1

          信息

          ID
          65
          时间
          1000ms
          内存
          256MiB
          难度
          4
          标签
          (无)
          递交数
          177
          已通过
          76
          上传者