(牛客网)华为机试(一)

Wesley13
• 阅读 614

(牛客网)华为机试题集解答

第一题 HJ108求最小公倍数:(牛客网)华为机试(一)

直接gcd解决

#include<iostream>
using namespace std;
int gcd(int a,int b) //求最大公约数函数
{
    int r;
    while(b)
    {
      r=a%b;
      a=b;
      b=r;
   }
   return a;
}
int main()
{
  int a,b,g;
  while(scanf("%d%d",&a,&b)!=EOF)
  {
      if(a>b)
        g=gcd(a,b);
      else
        g=gcd(b,a);
      g=(a*b)/g;
      printf("%d\n",g);
 
  }
   return 0;
}

第二题HJ107 求立方根:

(牛客网)华为机试(一)

思路:

使用二分查找,首先将输入的数字num与0构成一个区间,然后用(num+0)/2的三次幂与num进行比较,在这里要注意在计算机中两个数相当不意味着两个数字的每一位都相同,而是如果两个数的差值为1e-7(通常情况下)便认为相同,如果不相等便比较大小,如果小于num,则使用右边的区间再中值重复操作,若是大于num就在左边的区间同样操作直到找到满足条件的数然后按小数输出。

import java.util.Scanner;
public class Main{
    public static void main(String args[]){
        Scanner scanner = new Scanner(System.in);
       while (scanner.hasNext())
        {
            double input = scanner.nextDouble();
            double result = getCubeRoot(input);
            System.out.printf("%.1f\n", result);
        }
        scanner.close();
    }
   private static double getCubeRoot(double input){
       double min = 0;
        double max = input;
        double mid = 0;
         
        // 注意,这里的精度要提高一点,否则某些测试用例无法通过
        while ((max - min) > 1e-7)
        {
            mid = (max + min) / 2;
            if (mid * mid * mid > input)
                max = mid;
            else if (mid * mid * mid < input)
                min = mid;
            else
                return mid;
        }
        return max;
   }
}

第三题 HJ106 字符逆序:

(牛客网)华为机试(一) (牛客网)华为机试(一)

思路:队列或栈都可以直接,或者将字符串存入数组,然后按下标从大到小输出也可以,一定要注意输入的时候空格也是字符只有遇到回车符才结束。

import java.util.*;
public class Main{
    public static void main(String args[]){
        Scanner scanner=new Scanner(System.in);
        while(scanner.hasNext()){
            String str=scanner.nextLine();
            StringBuilder sb = new StringBuilder(str);
            System.out.println(sb.reverse().toString());
        }
    }
}

第四题 HJ105 记负均正

(牛客网)华为机试(一)

思路:

将输入的数字全放入一个数组中,然后遍历数组,在遍历的过程中使用两个计数器分别记录数组中负数的个数和正数的个数,还有有个累加器来记录正数的数字之和,这题重要的是输出格式中均值是小数类型。

import java.util.*;
import java.io.*;
public class Main{
     public static void main(String args[]) throws Exception{
     BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(System.in));
         String[] nums = bufferedreader.readLine().split(" ");
         int Num1 = 0; //记录负数的个数
         int Num2 = 0; //记录非负数的个数
         int sum = 0;
         for(int i=0;i<nums.length;i++){
             int num = Integer.parseInt(nums[i]);
             if(num<0){
                 Num1++;
             }
             else{
                 sum+=num;
                 Num2++;
             }
         }
         System.out.println(Num1);
         System.out.println(Math.round(sum*10.0/Num2)/10.0);
         
     }
}

预知后事,请听下回分解!!!!

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
Java爬虫之JSoup使用教程
title:Java爬虫之JSoup使用教程date:201812248:00:000800update:201812248:00:000800author:mecover:https://imgblog.csdnimg.cn/20181224144920712(https://www.oschin
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Stella981 Stella981
3年前
Linux部署安装
走进Linux世界一.VMware部署安装centos71.下载一个VMware,打开并点击创建新的虚拟机。!在这里插入图片描述(https://imgblog.csdnimg.cn/2020072119115514.png?xossprocessimage/watermark,type_ZmFuZ3poZW5naGVpdGk
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Dubbo爆出严重漏洞!可导致网站被控制、数据泄露!附解决方案
http://dy.163.com/v2/article/detail/F5FPIFRU0511Q1AF.html  !(http://dingyue.ws.126.net/2020/0216/125ec4c4p00q5rcrs0019d200ig009qg00ig009q.png)  来源:华为云  原文地址:https://w
Wesley13 Wesley13
3年前
VirtualService资源详解
VirtualService资源详解学习目标!在这里插入图片描述(https://imgblog.csdnimg.cn/20200831115404401.jpg?xossprocessimage/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,te
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这