9/17 越努力越幸运-思维赛(3.0) 解题思路

A

题意:给4个数,它们为3个数其中两两相加之和和三个数相加之和,求这三个

解题思路:先找出所给的4个数的最大值,然后用最大值从后面分别减去另外三个数输出的就是所求的三个数

#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
  int a,b,c,d,max=0,x[4],i;
  while(~scanf("%d%d%d%d",&a,&b,&c,&d))
  {
      x[0]=a;x[1]=b;x[2]=c;x[3]=d;
      for(i=0;i<4;i++)
      {
          if(x[i]>max)
            max=x[i];
      }
    if(max==a)
        printf("%d %d %d\n",max-d,max-c,max-b);
        else
        if(max==b)
        {
            printf("%d %d %d\n",max-d,max-c,max-a);
        }
        if(max==c)
        {
            printf("%d %d %d\n",max-d,max-b,max-a);
        }
        if(max==d)
        {
            printf("%d %d %d\n",max-c,max-b,max-a);
        }
  }
 return 0;
}

B

题意:给一组数据,将其中的数+d或者-d或者不变然后都变为相同的数,如果能输出这个数,如果不能输出-1

解题思路:找出数组中的最大值和最小值,然后看a[i]是否等于(minn+maxx)/2

 1 #include<stdio.h>
 2 #include<math.h>
 3 #include<string.h>
 4 int main()
 5 {
 6   int n,a[110],b[110],i,min,max,x;
 7   while(~scanf("%d",&n))
 8   {
 9       for(i=0;i<n;i++)
10         scanf("%d",&a[i]);
11
12         min=a[0];
13         max=a[0];
14       for(i=0;i<n;i++)
15       {
16           if(a[i]<min)
17             min=a[i];
18           if(a[i]>max)
19             max=a[i];
20       }
21       int flag=1;
22       for(i=0;i<n;i++)
23       {
24           if(a[i]==min||a[i]==max)
25           {
26               continue;
27           }
28           else
29               if(a[i]!=min&&a[i]!=max&&a[i]==(max+min)/2&&(max+min)%2==0)
30                 x=(max-min)/2;
31           else
32           {
33               flag=2;
34               printf("-1\n");
35               break;
36           }
37       }
38       if(flag==1)
39         {
40             if(min%2==0&&max%2==0)
41                    x=(max-min)/2;
42                     else if(min%2!=0&&max%2!=0)
43                         x=(max-min)/2;
44                     else
45                         x=max-min;
46              printf("%d\n",x);
47         }
48   }
49  return 0;
50 }

C

题意:一只猫每周的每一天吃的东西都不一样,现在给出每一样东西能吃的天数,求不间断的从周几开始吃能吃的最大天数

解题思路:找出能吃最少天数的食物,然后依次进行循环判断,记录下从开始到结束的天数

#include<stdio.h>
#include<math.h>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    int k,i,a,b,c,m,n,p,minn;
    while(cin>>a>>b>>c)
    {
        m=a/3; n=b/2; p=c/2;
        minn=m;
        minn=min(minn,n);
        minn=min(minn,p);
        int sum=7*minn;
        m=a-minn*3; n=b-minn*2; p=c-minn*2;
        int j=7;
        int x[101]={0};
        while(j--)
        {
            i=j+1; k=0;
            a=m; b=n; c=p;
            for(;i<=7;i++)
            {
                if(i==1||i==4||i==7)
                {
                    if(a==0)
                        break;
                    a--;
                    k++;
                    x[j]=k;
                }
                if(i==2||i==6)
                {
                    if(b==0)
                        break;
                    b--;
                     k++;
                    x[j]=k;
                }
                if(i==3||i==5)
                {
                    if(c==0)
                        break;
                    c--;
                     k++;
                    x[j]=k;
                }
                if(i==7)
                    i=0;
            }
        }
        sort(x,x+7);
        cout<<sum+x[6]<<endl;
    }
}

D

题意:有两种电池能用与白天和晚上,白天用b电池能充电变为a电池,求所有的电池能用的最大天数

解题思路:先判断是白天还是晚上,然后决定用什么电池,依次进行判断直到结束

#include<stdio.h>
#include<math.h>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    int n,b,a,i,x[200010],count=0,p,q;
    while(cin>>n>>b>>a)
    {
        p=a;q=b;
        for(i=0;i<n;i++)
            cin>>x[i];
            for(i=0;i<n;i++)
            {
                if(x[i]==0)
                  {
                      if(a>=1)
                      {
                          a--;
                          count++;
                      }
                      else
                      {
                          b--;
                          count++;
                      }
                  }
                  else
                  {
                      if(a==p)
                     {
                         if(a>=1)
                         {
                             a--;
                             count++;
                         }
                         else
                         {
                             b--;
                             a++;
                             count++;
                         }
                     }
                     else
                     {
                         if(b>=1)
                         {
                             b--;
                             a++;
                             count++;
                         }
                         else
                         {
                             a--;
                             count++;
                         }
                     }
                  }
                  if(a==0&&b==0)
                    break;
            }
                cout<<count<<endl;
    }
 return 0;
}

原文地址:https://www.cnblogs.com/xiao20000605/p/11624287.html

时间: 2024-10-05 08:02:34

9/17 越努力越幸运-思维赛(3.0) 解题思路的相关文章

9/15 越努力越幸运-思维赛(2.0)解题思路

A 题意:给一组数据和一个k,求比k小的数的个数,比较只能从最左边或者最右边开始,当数据比k大时结束 解题思路:找出数据中的最大值,如果最大值比k小,输出数据的个数,否则从前和后判断两次,输出两次比k小的个数之和 代码: #include<stdio.h>#include<math.h>#include<string.h>int main(){   int n,k,i,a[100],ans=0,flag=0,max,b=0;   while(~scanf("%

越努力越幸运~加油

在这个世界上,总有那么一些人,他们智商不高,却总是傻傻地努力,笨笨的坚持,现实从不偏爱这样的笨小孩,但因为他们总是在锲而不舍的敲门,希望的大门也就渐渐的不得不向他们敞开…… 觉得自己做的到和不做的到,其实只在一念之间. 越努力越幸运,加油!!

越努力越幸运 —— 51CTO PMP百日备考记

越努力越幸运 -- 51CTO PMP百日备考记 (PMP4期VIP备考群180908 唐尧) 经历一个月的漫长等待后,终于收到PMI发来的邮件,当第一眼看到"congratulations"时,兴奋和激动的心情已难以抑制,紧握拳头对着自己喊了句"YES!"再一次印证了我的座右铭"越努力越幸运". 上一次有这种经历和感受还是在15年前,2003年国庆节后,毅然决定准备考研,从10月到来年1月,同样只有100天左右的备考时间,功夫不负有心人,100

越努力越幸运

未来充满了一切的可能,而所有的可能都存在蝴蝶效应,也许是曾经某一个小的发端,最后造就了当下所有感觉好,或者不好的事情. 当下我们的处境一般不会是最好的,当然也最有可能不是最坏的,所以学会善待当下是对自己最好的肯定.努力为自己的下一步做好规划,成就更好的自己,而不是把所谓的成功交给别人定义,因为即使是社会所认可的成功,对于成功的人本身来说,不一定是最好的人生阶段.所以我们不必通过对比来获得即时的满足感,否则也会通过对比带来更多的将会是挫败感.因为人的眼睛总是喜欢向上看的,有时候甚至忘记了脚下的路和

2017年第六届数学中国数学建模国际赛(小美赛)C题解题思路

这篇文章主要是介绍下C题的解题思路,首先我们对这道C题进行一个整体的概括,结构如下: C题:经济类 第一问:发现危险人群. 发现:欺诈的方式开始.雇佣或浪漫的承诺. 数据→确定特定的经济萧条地区→确定最危险的人群→针对这些人群的预防活动 被贩卖的因素(卷入人口贩运的风险因素): 贫困.失业.移民.逃避政治冲突.战争. 第二问:受害者身份和位置 发现:人口贩运网:动态的 贩毒者:频繁地改变分布.运输路线 (以避免被发现) ↓(信息不完整) 执法人员和分析人员→试图识别.摧毁 人口贩卖网络→(信息不

越努力越幸运--2018年7月22日周记

本周过的很快,记录下本周. 1. 上一家公司,听前同事说方哥也跑路了,感触颇多,程序员这一行,到了后面,路越来越窄,方哥,山哥能力没得说,都是大神级别的,却找不到自己的安乐之地. 2. 本周遇到有趣. 问题 :TCP协议,SOCKET其的短连接,c端被动断掉,出现了CLOSE_WAIT状态. 环境: : C ->  性能F5 -> S 现象: 1. 调用write,errno 返回104,错误说明connection reset by peer.连接被重置     2. 程序直接退出,啥现象看

总结2017,希望2018越挫越勇

从2018年到来就开始意识到2017年挺失败,自己不满意,不满意到心态已经崩了.在攀登科研之峰的路上越走越慢,越慢越抑郁. 今天大哭了一场,和男票聊了好久终于想开了,踏踏实实慢慢走吧,只要坚持总能看到一点点转机.励志的鸡汤就不写了,记录一下聊天的心得吧: 方法论: 男票说:"现在的论文主要都是一个思路:把先验知识融入到网络结构中.网络擅长学习分类分割等任务,但是有些先验知识很难学到或者学不好,需要设计到网络结构中,比如用乘法(attention).加法.位移(STN, Deformable Co

大四狗:我的java历程——越努力,越幸运。

大二的时候写过一篇博客,< 作为一名计算机学院普通的大学生如何提高兴趣敲代码 >,没想到当时引起了很多同学的共鸣,有的人觉得受到了鼓舞,有的人觉得看到这篇文章已经大四,要改变也太晚了.然而对于我,写完那篇博客之后发生了很多事情,在java学习上有坚持,有懈怠,有前进,亦有低谷.好在现在,起码是这会儿,我还在低头看路,还在走上坡路.那会儿到现在大概一年半的时间,我就来说说这一年半的时间我的java历程吧,还是和上次一样,希望大家在看完我的故事之后,可以留下感想.或是鼓励,分享自己学习java的经

职场丨努力越说越不值钱

努力值钱吗?值钱!!!但是他存在一个怪圈,就是越说越不值钱. 职场上,有一种人,他们只是看起来很努力 每天第一个来公司,最后一个下班,每天都感觉忙忙碌碌勤勤恳恳的.成绩却寥寥无几.网上有很多文章称这种努力只是看起来很努力.其实你的努力一文不值,因为你没把它变现. 这也让很多主管对这样的职员又爱又恨,提拔他吧,没有成绩,辞退他吧,毕竟他也这么努力. 我们身边的通过努力而成功的励志人物和故事不胜枚举,但是相信努力就会成功的话,你就输了. 结果是第一位的,努力只是成功的解释. 没有功劳,努力就是“白劳