首页 > 编程语言 >【每日例题】 蓝桥杯 c++ 冶炼金属

【每日例题】 蓝桥杯 c++ 冶炼金属

时间:2023-11-16 13:44:53浏览次数:33  
标签:记录 int 最大值 c++ 金属 蓝桥 最小值 例题 冶炼

冶炼金属

题目

小蓝有一个神奇的炉子用于将普通金属О冶炼成为一种特殊金属X。这个炉子有一个称作转换率的属性V,V是一个正整数,这意味着消耗V个普通金属О恰好可以冶炼出一个特殊金属X,当普通金属О的数目不足V时,无法继续冶炼。现在给出了Ⅳ条冶炼记录,每条记录中包含两个整数A和B,这表示本次投入了A个普通金属О,最终冶炼出了B个特殊金属X。每条记录都是独立的,这意味着上一次没消耗完的普通金属О不会累加到下一次的冶炼当中。
根据这N条冶炼记录,请你推测出转换率V的最小值和最大值分别可能是多少,题目保证评测数据不存在无解的情况。
输入格式
第—行一个整数N,表示冶炼记录的数目。
接下来输入N行,每行两个整数A、B,含义如题目所述。
输出格式
输出两个整数,分别表示V可能的最小值和最大值,中间用空格分开。

蓝桥杯 冶炼金属

思路分析

题目简单分析可归纳成一句话:在要求范围内寻找极值,该要求范围为最大最小值都符合【a/最大值or最小值】=b,【】类似于int取整数,只需要整数部分。

所以,我们有了一个思路,求出所有冶炼记录的最大最小值,然后找出所有最小值的最小值,所有最大值的最大值,然后将最大值与最小值往下取,找出最大值与最小值的极值,即出现某条记录中【a/最大值or最小值】不等于b

如果还是不能理解思路分析,可跟着代码的解析去理解

代码

#include <iostream>
using namespace std;
int main()
{
  int n,j,t=1;//n为多少条数据,j为记录最大值是否符合数据,t为记录最小值是否复合数据
  long int a[10000],b[10000];//存储每一条数据
  long int min=0,max=0;//最小值与最大值
  cin>>n;
  for(int i=0;i<n;i++)
  {
    cin>>a[i]>>b[i];//输入数据
    if(i==0)//为第一条数据时,为最大最小值赋值
    {
      min=a[i]/b[i];
      max=a[i]/b[i];
    }
    else//寻找整组数据的最大最小值
    {
      if(a[i]/b[i]<min)
        min=a[i]/b[i];
      else if(a[i]/b[i]>max)
        max=a[i]/b[i];
    }
  }
  while(min--)//寻找符合要求的最小值,向下寻找
  {
    for(int i=0;i<n;i++)
    {
      if(a[i]/min>b[i])//不符合冶炼记录
      {
        t=0;//记录不符合冶炼记录
        break;
      }
    }
    if(t==0)//当前最小值不符合冶炼记录,取前一个最小值
    {
      min++;
      break;
    }
  }
  while(max--)//寻找最大值,向下找
  {
    j=0;
    for(int i=0;i<n;i++)
    {
      if(b[i]*max>a[i])//不符合要求
        break;
      else
        j++;
    }
    if(j==n)//符合所有数据,跳出循环
      break;
  }
  cout<<min<<" "<<max;
  return 0;
}

  

 

标签:记录,int,最大值,c++,金属,蓝桥,最小值,例题,冶炼
From: https://www.cnblogs.com/hcrzhi/p/17836026.html

相关文章

  • P9242 [蓝桥杯 2023 E题] 接龙数列
    P9242[蓝桥杯2023E题]接龙数列一眼LIS但是TLE八个点。发现是sb了,应该用string来存数直接取首位末位。改完50分,TLE五个点。换状态\[F_i$$为以数字$i$结尾的最长接龙数列。则顺推每个数字,从每个数字的首位$F_{j_1}+1$以及末位$F_{j_n}$中取最大转移而来。即......
  • C++实现YoloV7目标识别与实例分割推理
    前言1.简介7月份,由YOLOV4的原班人马Chien-YaoWang、AlexeyBochkovskiy和Hong-YuanMarkLiao推出的YoloV7,应该是目前开源的目标检测算法最好之一了,它在在5FPS到160FPS范围内的速度和精度达到了新的高度,优于YOLOR、YOLOX、Scaled-YOLOv4、YOLOv5、DETR等多种目标检测器......
  • C/C++ 实现获取硬盘序列号
    获取硬盘的序列号、型号和固件版本号,此类功能通常用于做硬盘绑定或硬件验证操作,通过使用WindowsAPI的DeviceIoControl函数与物理硬盘驱动程序进行通信,发送ATA命令来获取硬盘的信息。以下是该程序的主要功能和流程:定义常量IDE_ATAPI_IDENTIFY和IDE_ATA_IDENTIFY分别表示读取......
  • c++ AI实战手册-c++ 20(1)
    目录hello,worldhello,worldimport<iostream>;usingnamespacestd;intmain(){cout<<"Helloworld!"<<endl;return0;}g++-c-fmodules-ts-xc++-system-header-std=c++20iostream#g++-fmodules-ts-std=c++20......
  • c++ AI 实战手册(3)-gtk(1)
    目录gtk概述hello,worldgtk概述GTK是一个小部件工具包。由GTK创建的每个用户界面都由小部件组成。这是在C中使用GObject实现的,这是一个面向对象的C框架。[]小部件被组织在一个层次结构中。窗口小部件是主容器。然后,通过向窗口中添加按钮、下拉菜单、输入字段和其他小部件来构建......
  • C++ signal(SIGFPE,handler) ignore division by 0 exception
    #include<stdexcept>#include<chrono>#include<csetjmp>#include<ctime>#include<fstream>#include<iostream>#include<iomanip>#include<signal.h>#include<sstream>#include<thread>#incl......
  • 蓝桥杯管道 -- 二分, 区间覆盖
    蓝桥杯管道--二分,区间覆盖原题链接参照执梗大佬的代码,我太菜了wuwuwu......importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;importjava.util.Scanner;/***ClassName:Main12*Package:*Description:**@author:LH寒酥......
  • 【每日例题】蓝桥杯 c++ 小郑下五子棋
    小郑下五子棋题目五子棋是—种两人对弈的棋类游戏,它使用黑白两种棋子在一个20×20的棋盘上进行。黑方执黑棋,白方执白棋。双方轮流下棋,目标是先在横向、纵向或斜向连成五个己颜色的棋子,即五子相连,即可获胜。五子棋是—种简单却富有策略的游戏,常常被用于智力训练和竞技比赛。这不,......
  • c++全局变量extern
    externextern是C++中的一个关键字,用于声明一个变量或函数是在其他文件中定义的。它的作用是告诉编译器在链接时在其他文件中寻找该变量或函数的定义。在C++中,如果一个变量或函数在多个文件中使用,那么就需要在每个文件中都声明一次该变量或函数。这时就可以使用extern关键字......
  • C++ 程序数据传输到动态库后,出现乱码
    程序结构体和动态库结构体如下structVehInfo{ intID; intlaneId; VEHSTATEvehstate; intleftX; intrightX; intleftXSignal;//单车道的左位置 intrightXSignal;//单车道的右位置 intvehLen; intvehWidth; intvehHeight; /*****************************......