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

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

第一题 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);
         
     }
}

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

下一篇地址:牛客网:华为机试(二)
### 关于牛客网华为第108题的信息 目前在已知的参考资料中,并未提及具体的“华为第108题”的相关内容[^1]。通常情况下,华为题编号范围集中在前几十道题目(如HJ1至HJ30),这些题目涵盖了常见的算法和逻辑问题,例如字符串操作、数组处理、动态规划等[^2]。 如果目标是寻找特定编号较高的题目(如第108题),可能该题目属于较新的更新或者不在公开资料范围内。建议通过以下方式获取更多信息: 1. **访问牛客网官方页面**:登录牛客网并搜索关键词“华为”,查看是否有最新的题目发布。 2. **社区讨论区查询**:许多用户会在论坛或评论区分享自己的解题经验以及遇到的新题目。 3. **模拟测环境**:部分付费会员服务可能会提供更全面的练习资源,包括高编号的题目。 以下是基于常见华为特点推测的般解题思路框架,适用于大多数类型的编程挑战: #### 常见解题模板 对于未知的具体题目,可以采用通用的方法来分析和解决问题: ```python def solve_problem(input_data): """ 输入参数定义 :param input_data: 用户输入的数据结构 (e.g., 列表, 字符串) :return: 计算后的结果 """ result = None # 数据预处理阶段 processed_input = preprocess(input_data) # 主要逻辑实现 if isinstance(processed_input, list): result = handle_list_logic(processed_input) elif isinstance(processed_input, str): result = handle_string_logic(processed_input) return postprocess(result) def preprocess(data): """ 对原始数据进行清洗或转换 """ pass def handle_list_logic(lst): """ 处理列表形式的任务逻辑 """ pass def handle_string_logic(s): """ 处理字符串形式的任务逻辑 """ pass def postprocess(output): """ 结果后置处理,比如格式化输出 """ pass ``` 此代码仅为示意用途,实际应用需根据具体需求调整函数功能与细节[^4]。 --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值