找回密码
 会员注册
查看: 29|回复: 0

2023华为od-C卷-第三题-孙悟空吃蟠桃100%通过率(JS&Java&Python&C++)

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
64449
发表于 2024-9-2 21:00:32 | 显示全部楼层 |阅读模式
本题已有网友报告代码100%通过率本题视频讲解:视频讲解OJ&答疑服务购买任意专栏,即可私信博主,获取答疑/辅导服务OJ权限获取可以在购买专栏后访问网站:首页-CodeFun2000题目描述孙悟空爱吃蟠桃,有一天趁着蟠桃园守卫不在来偷吃。已知蟠桃园有NNN棵蟠桃树,每颗树上都桃子,守卫将在HHH小时后回来。孙悟空可以决定他吃蟠桃的速度KKK(个/每小时),每个小时选一棵桃树,并从树上吃掉KKK个,则全部吃掉,并且这一小时剩余的时间里不再吃桃。孙悟空喜欢慢慢吃,但又想在守卫回来前吃完桃子。请返回孙悟空可以在HHH小时内吃掉所有桃子的最小速度KKK(KKK为整数)。如果以任何速度都吃不完所有桃子,则返回000。输入描述第一行输入为NNN个数字,NNN表示桃树的数量,这NNN个数字表示每棵桃树上蟠桃的数量。第二行输入为一个数字,表示守卫离开的时间HHH。其中数字通过空格分割,NNN、HHH为正整数,每棵树上都有蟠桃,且$0{if(w.length===0){w=line.split('').map(Number);//读入n个数字}elseif(h===0){h=parseInt(line);letn=w.length;if(n>h){//每小时最多只能吃一颗桃树,因此没办法吃完所有桃树console.log(0);}else{letl=1,r=1e9;//二分左右边界while(lh){returnfalse;}}returntrue;}1234567891011121314151617181920212223242526272829303132333435363738394041424344'运行运行Java代码importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);String[]input=sc.nextLine().split("");//读入n个数字inth=Integer.parseInt(sc.nextLine());intn=input.length;int[]w=newint[n];for(inti=0;ih){//每小时最多只能吃一颗桃树,因此没办法吃完所有桃树System.out.println(0);}else{intl=1,r=(int)1e9;//二分左右边界while(lh){returnfalse;}}returntrue;}}12345678910111213141516171819202122232425262728293031323334353637383940C++代码#include//引入所有标准库头文件usingnamespacestd;constintN=1E5+10;//定义数组大小intw[N],h,n;//定义桃树数量、小时数和桃树数组boolcheck(intx){//判断当吃的速度为x的时候,是否能吃完所有桃树intcnt=0;//记录吃完所有桃树的时间for(inti=1;ih)returnfalse;//如果吃完所有桃树的时间超过了规定时间,返回false}returntrue;//如果吃完所有桃树的时间不超过规定时间,返回true}intmain(){while(cin>>w[++n]);//读入桃树数量和每颗桃树的数量h=w[--n];//最后一个数为规定时间,将其赋值给h--n;//桃树数量减一if(n>h)puts("0");//如果桃树数量大于规定时间,输出0else{intl=1,r=1e9;//二分左右边界while(l>1;//取中间值if(check(mid))r=mid;//如果能吃完所有桃树,将右边界移动到中间值elsel=mid+1;//如果不能吃完所有桃树,将左边界移动到中间值+1}cout<
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-26 23:59 , Processed in 0.440864 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表