• 砝码称重


    看到只有六个数,直接六个for循环,但总和小于等于1000并不代表它们的个数乘积小,所以80,但有一点,这样是80

    #include<iostream>
    #include<cstdio>
    using namespace std;
    const int maxn=1007;
    int a1,a2,a3,a5,a10,a20,ans;
    int a[maxn];
    bool vis[maxn];
    int main(){
           cin>>a1>>a2>>a3>>a5>>a10>>a20;
           for(int i=0;i<=a1;i++)
               for(int j=0;j<=a2;j++)
                   for(int k=0;k<=a3;k++)
                       for(int u=0;u<=a5;u++)
                           for(int v=0;v<=a10;v++)
                               for(int w=0;w<=a20;w++){
                                   int aa=i*1+j*2+k*3+u*5+v*10+w*20;
                                   vis[aa]=true; 
                               }
           for(int i=1;i<=1007;i++){
               if(vis[i]) ans++;
           }
           cout<<"Total="<<ans<<endl;
           return 0;
    }

    这样是64

    #include<iostream>
    #include<cstdio>
    using namespace std;
    const int maxn=1007;
    int a1,a2,a3,a5,a10,a20,ans,size;
    int a[maxn];
    bool vis[maxn];
    int main(){
           cin>>a1>>a2>>a3>>a5>>a10>>a20;
           for(int i=0;i<=a1;i++)
               for(int j=0;j<=a2;j++)
                   for(int k=0;k<=a3;k++)
                       for(int u=0;u<=a5;u++)
                           for(int v=0;v<=a10;v++)
                               for(int w=0;w<=a20;w++){
                                   int aa=i*1+j*2+k*3+u*5+v*10+w*20;
                                   vis[aa]=true; 
                                   size=max(aa,size);
                               }
           for(int i=1;i<=size;i++){
               if(vis[i]) ans++;
           }
           cout<<"Total="<<ans<<endl;
           return 0;
    }

    说明什么制约了复杂度(显然)

    #include<iostream>
    #include<cstdio>
    using namespace std;
    const int maxn=1007;
    int a1,a2,a3,a5,a10,a20,ans;
    int a[maxn];
    bool vis[maxn];
    int main(){
           cin>>a1>>a2>>a3>>a5>>a10>>a20;
           int n=a1*1+a2*2+a3*3+a5*5+a10*10+a20*20;
           for(int i=1;i<=n;i++){
               int aa=i;
               aa-=min(a20,aa/20)*20;
               aa-=min(a10,aa/10)*10;
               aa-=min(a5,aa/5)*5;
               aa-=min(a3,aa/3)*3;
               aa-=min(a2,aa/2)*2;
               aa-=min(a1,aa/1)*1;
               if(aa==0) ans++;
           }
           cout<<"Total="<<ans<<endl;
           return 0;
    }
  • 相关阅读:
    Git远程和分支管理
    Git基本使用教程
    linux基础知识总结
    正则表达式-概要
    java注释规范
    JavaScript对象(Object)
    centos7安装docker
    springboot项目问题记录one
    tomcat不需要重启热部署xml文件
    java调用新浪接口根据Ip查询所属地区
  • 原文地址:https://www.cnblogs.com/lcan/p/9412917.html
Copyright © 2020-2023  润新知