【蓝桥真题4】练练填空就想进国赛?拿下大题才能让你真正有底气(蓝桥31日冲刺打卡)(上)

简介: 【蓝桥真题4】练练填空就想进国赛?拿下大题才能让你真正有底气(蓝桥31日冲刺打卡)

🍋1.时间显示      


        小蓝要和朋友合作开发一个时间显示的网站。在服务器上,朋友已经获取

了当前的时间,用一个整数表示,值为从 1970 年 1 月 1 日 00:00:00 到当前时

刻经过的毫秒数。


       现在,小蓝要在客户端显示出这个时间。小蓝不用显示出年月日,只需要

显示出时分秒即可,毫秒也不用显示,直接舍去即可。


       给定一个用整数表示的时间,请将这个时间对应的时分秒输出。


       具体的输入输出可以在题目链接可看。


       题目链接:时间显示https://www.lanqiao.cn/problems/1452/learning/


       这是去年JavaB组省赛的第一道大题,有的人一看到就来一句——卧槽!这么难?从1970年开始那得有多少毫秒?算了算了先看下一题。但是大家要想一下? 题目求的是什么?是今天的时分秒!我们不需要去关心今天是多少年多少月多少日,所以我们有下面的这几步思考步骤:


        设接收到的总毫秒数为n。


        1.首先先n=n/1000。因为n的单位是毫秒,我们需要的最低精准单位是秒,而1s=1000ms,所以不足一秒的毫秒我们直接舍去,此时n的单位变成了秒


       2.进行操作n=n%(60*60*24)。因为我们只关心今天走了的时间,也就是今天走了多少秒,我们对一整天的秒数进行取余,则获得的就是未满一天的秒数,也就是今天的


       3.long hour=n/3600;因为我们已经获得了今天的秒数,1h=3600s,我们算出n可以整除出多少个3600,则就是多少个小时,由此得到了今天的小时数。


       4.n%=3600;long month=n/60;我们先对n%3600是为了得到剩下未满一个小时的秒数,也就是分加上秒的,我们对n取余60,就能得到分钟的值。


       5.n%=60; long s=n;同理于分,先取余60,剩下的n就是我们最后的秒数了。


代码转换:


import java.util.Scanner;
public class 时间显示 {
  public static void main(String[] args) {
  Scanner sc=new Scanner(System.in);
  long n=sc.nextLong();
  //拿到的是毫秒,先转换为秒,1m等于1000ms
  n=n/1000;
  //现在拿到的是秒,对一天的秒数取余即可获得今天的秒数
  n=n%(60*60*24);
  //现在拿到的是一天的秒数,开始转化为答案,一小时有3600秒,先获得秒
  long hour=n/3600;
  //现在获得分钟加分
  n%=3600;
  //再获得分钟
  long month=n/60;
  //再获得秒
  n%=60;
  long s=n;
  //这里涉及输出格式,大家可以学习一下printf的输出格式
  System.out.printf("%02d:%02d:%02d",hour,month,s); 
  }
}


👑2.分巧克力


儿童节那天有 K 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。


小明一共有 N 块巧克力,其中第 i 块是 Hi×Wi 的方格组成的长方形。为了公平起见,


小明需要从这 N 块巧克力中切出 K 块巧克力分给小朋友们。切出的巧克力需要满足:


形状是正方形,边长是整数;


大小相同;


例如一块 6x5 的巧克力可以切出 6 块 2x2 的巧克力或者 2 块 3x3 的巧克力。


当然小朋友们都希望得到的巧克力尽可能大,你能帮小明计算出最大的边长是多少么?


具体的输入输出可以在题目链接可看。


题目链接:分巧克力 https://www.lanqiao.cn/problems/99/learning/    


       首先对于一块Hi×Wi的巧克力,如果我们设切出的巧克力边长为n(题目要求必须是正方形),那么这块巧克力能切出我们符合要求的巧克力的块数为(Hi/n)×(Wi/n)。一个小破图给大家理解一下。

     

image.png

       这个公式对于每块巧克力都是适用的。也就是说,当我们选定一个n,就可以计算出这一堆巧克力能切出多少块边长为n的巧克力。我们需要去找出最大的符合条件的n,很明显,我们需要引用到二分查找——去找到最大的符合条件的n,这里的符合条件是保证切出的块数大于等于K,也就是足够每个小朋友分到。


       代码转换:


import java.util.Scanner;
public class Main {
  public static void main(String[] args) {
  Scanner sc=new Scanner(System.in);
  int N=sc.nextInt();
  int K=sc.nextInt();
        //用来存储每块巧克力的长和宽
  int[][] arr=new int[N][2];
  for(int i=0;i<N;++i) {
    arr[i][0]=sc.nextInt();
    arr[i][1]=sc.nextInt();
  }
        //r的值根据题目给的长和宽进行选择
  int l=1;
  int r=100000;
  while(l<r) {
    int mid=(l+r+1)/2;
            //check满足说明切的块数足够分
    if(check(arr,mid,K)) l=mid;
    else r=mid-1;
  }
  System.out.println(l);
  }
  //X越小块数越多,找出X的最大值
  //判断以边长X来分,是否可以分够X块
  static boolean check(int[][] arr,int X,int K) {
  int count=0;
  for(int i=0;i<arr.length;++i) {
            //这里计算能分多少块边长为X的巧克力
    int ans=(arr[i][0]/X)*(arr[i][1]/X);
    count+=ans;
  }
  return count>=K;
  }
}


🎅3.时间加法


现在时间是 a 点 b 分,请问 t 分钟后,是几点几分?


题目链接:时间加法https://www.lanqiao.cn/problems/548/learning/


具体的输入输出可以在题目链接可看。


         这是今年一道简单的模拟赛题目,我们需要模拟时间的加法,这里需要完成分钟超过60后对小时进行进位,小时超过24小时后需要重置(也就是到达了第二天)


        代码转换:


import java.util.Scanner;
public class Main {
  public static void main(String[] args) {
  Scanner sc=new Scanner(System.in);
  int a=sc.nextInt();
  int b=sc.nextInt();
  int t=sc.nextInt();
        //让分钟加上t
  b+=t;
  int ans=0;
        //如果分钟达到60,需要进位
  if(b>=60) {
            //算出小时的增量
    ans=b/60;
            //对60取余算出分钟
    b%=60;
  }
        //小时加上增量
  a+=ans;
  if(a>=24) {
            //如果小时超过24需要取余重置
    a%=24;
  }
  System.out.println(a);
  System.out.println(b);
  }
}


相关文章
|
存储 Java 程序员
Java SE的15道经典面试题
Java SE的15道经典面试题
295 0
|
存储 SQL 缓存
实时数仓宽表加工解决方案
实时数仓宽表加工解决方案
285 0
实时数仓宽表加工解决方案
|
Linux Shell 开发工具
10分钟让你的Linux Shell终端变得更优雅,更高效——【Linux服务器下OhMyZsh+P10k安装实践】
10分钟让你的Linux Shell终端变得更优雅,更高效——【Linux服务器下OhMyZsh+P10k安装实践】
374 1
|
4月前
|
Linux
linux文件重命名命令
本指南介绍Linux文件重命名方法,包括单文件操作的`mv`命令和批量处理的`rename`命令。`mv`可简单更改文件名并保留扩展名,如`mv old_file.txt new_name.txt`;`rename`支持正则表达式,适用于复杂批量操作,如`rename &#39;s/2023/2024/&#39; *.log`。提供实用技巧如大小写转换、数字序列处理等,并提醒覆盖风险与版本差异,建议使用`-n`参数预览效果。
|
9月前
|
搜索推荐 数据挖掘 API
电商发展的强大助推器:淘宝API
淘宝API是阿里巴巴为开发者提供的访问淘宝开放平台(TOP)的接口,连接淘宝电商生态系统与外部应用。它支持商品管理、订单处理、用户信息和营销推广等功能,帮助开发者轻松获取商品信息、处理订单、管理会员和进行数据分析。通过淘宝API,电商企业能提高效率、降低成本、增加收入并优化用户体验。其应用广泛,涵盖电商平台建设、价格比较、市场研究及移动应用开发等领域。未来,淘宝API将融合人工智能、拓展生态合作并加强数据安全,持续推动电商行业发展。
606 34
|
XML Web App开发 Java
【软件测试】关于Web自动化测试
【软件测试】关于Web自动化测试
|
监控 数据可视化 Linux
使用Portainer图形化工具轻松管理远程Docker环境并实现远程访问
使用Portainer图形化工具轻松管理远程Docker环境并实现远程访问
|
数据可视化 搜索推荐 开发者
WordPress
WordPress
521 2
|
分布式计算 Hadoop
Iceberg实战踩坑指南(二)
Iceberg实战踩坑指南
337 0
|
存储 算法
栈在递归中的应用
栈在递归中的应用
308 0