• 比赛总结之————————————全国新生赛。


    ——————————————————————————————————————1002————————————————————————————

    投币洗衣机
    
    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 5878    Accepted Submission(s): 1460
    
    
    Problem Description
      如今大学生的生活条件越来越好了,近期,内蒙某高校在每个寝室楼都添置了一台投币洗衣机。
      小明作为经常参加训练的ACM队员,非常忙(Lan)碌(Duo),当然非常乐意把衣服丢给洗衣机解决啦。根据要洗的衣服数量,投币洗衣机每次需要投入2-4 枚硬币。
      小明是一个非常容易出汗的男生,夏天就要到了,每天都要洗澡,所以也就有大量衣服需要洗。
      小明是这么制定投币洗衣机计划的:当屯积的衣服数量大于等于a且小于b的时候,他就会马上全部拿去给洗衣机洗,并且投入2枚硬币;当屯积的衣服数量大于等于b且小于c的时候,他就会马上全部拿去给洗衣机洗,并且投入3枚硬币;当屯积的衣服数量大于等于c的时候,他就会马上全部拿去给洗衣机洗,并且投入4枚硬币。其他细节见样例。
    
      现在知道,小明过去n 天每天换下的衣服数量v件,需要你帮忙计算出小明在过去这段时间洗衣服一共花了多少钱。
     
    
    Input
    输入包含多组测试数据。
    
    每组数据第一行是4个正整数 n (1<=n<=10000) 、a 、b 、c (1<=a<b<c<=300),具体含义见题目描述。
    
    每组数据第二行包含n个正整数,按顺序表示过去n天每天产生的衣服数量v(1<=v<=1000)。
     
    
    Output
    每组数据输出一个整数,表示小明过去n天中洗衣服一共花了多少钱。
    每组输出占一行。
     
    
    Sample Input
    3 2 4 6
    2 2 1
     
    
    Sample Output
    4

    本题是一个水题。

    先给我的错误答案:不知道是因为紧张压力大还是咋回事,错的这么严重。附上代码和错误的地方

    #include<stdio.h>
    int main()
    {
        int a,b,c,i,n,m;
        while(scanf("%d%d%d%d",&n,&a,&b,&c)!=EOF)
        {
            int q=0,s=0;
            for(i=0;i<n;i++)
            {
                scanf("%d",&m);
                m=m+q;//这里的q用完之后必须让q等零。在一个变量走过一个循环的时候就抓紧让他变成应该是的数字。
                if(m>=a&&m<b)
                    s=s+2;
                else
                    if(m>=b&&m<c)
                        s=s+3;
                    else
                        if(m>=4)
                            s=s+4;
                        else
                            q=q+m;//这里的q=q+m和上面的  m=m+q,一配对刚好是m=2*m+q;死逼;
                        if(q>=a)//这里就是纯属扯淡,不知道咋回事想到了这个,原因应该是自己函数调用用的不多。
                        {
                            s=s+q;//不用该有的一个if判断。
                            q=0;
                        }
            }
             printf("%d
    ",s);
        }
    }

    下面附上修改后的代码。

    #include<stdio.h>
    int main()
    {
        int a,b,c,i,n,v;
        while(scanf("%d%d%d%d",&n,&a,&b,&c)!=EOF)
        {
            int q=0,s=0;
            for(i=0;i<n;i++)
            {
                scanf("%d",&v);
                v=v+q;
                q=0;
                if(v>=a&&v<b)
                    s=s+2;
                else
                    if(v>=b&&v<c)
                        s=s+3;
                    else
                        if(v>=c)
                            s=s+4;
                        else
                            q=v;
            }
             printf("%d
    ",s);
            s=0;
        }
    }

    不好灰心丧气,只要你在别人睡觉的时候学习,别人学习的时候更加努力的学习。你就能虐死他们。up    up   up   !!!

  • 相关阅读:
    解决android模拟器太大,小屏幕无法完全显示的问题
    寡人写的第一个HTML5页面
    android开发环境重装系统之后的配置
    PHP程序的一次重构记录
    重构遗留代码(1):金牌大师
    java加密算法研究
    理解Java常量池
    由一个项目看java TCP/IP Socket编程
    java List分组和排序处理
    JAVA获取方法参数名的分析(一)
  • 原文地址:https://www.cnblogs.com/A-FM/p/5006055.html
Copyright © 2020-2023  润新知