【春招找工作】华为机试题

阅读: 评论:0

【春招找工作】华为机试题

【春招找工作】华为机试题

华为机试题练习

    • 01 勾股元组数
    • 02 整数对最小和
    • 03 n阶方阵和
    • 04 TLV解码
    • 05 猴子跳台阶
    • 06 GPU 算力
    • 07 身高排序(绝对差值)
    • 08 区间字符串倒转输出

01 勾股元组数

import java.util.Scanner;
/*** Created with IntelliJ IDEA.* Author: Dawn* Date: 2022/03/19* Time: 19:20* Description:勾股数/辗转相除法判断互质*//*
如果三个正整数A B C ,A²+B²=C²则为勾股数如果ABC之间两两互质,即A与B A与C B与C均互质没有公约数,则称其为勾股数元组。
请求出给定n m 范围内所有的勾股数元组
输入描述
起始范围 1<n<10000    n<m<10000
输出目描述abc 保证a<b<c输出格式  a b c多组勾股数元组 按照a升序b升序 c升序的排序方式输出。给定范围内,找不到勾股数元组时,输出  Na案例输入120输出3 4 55 12 138 15 17输入510输出Na*/public class deke01 {public static void main(String[] args) {Scanner in =new Scanner(System.in);int count = 0;try {int n = in.nextInt();int m = in.nextInt();for(int i=n;i<m;i++) {for(int j=n+1;j<m;j++) {for(int k=n+2;k<m;k++) {if(i<j && j<k&& i*i+j*j==k*k&& huzhi(i, j)==1&& huzhi(j, k)==1&& huzhi(i, k)==1) {System.out.println(i+" "+j+" "+k);count++;}}}}}catch (Exception e) {// TODO: handle exception}finally {if(count==0) {System.out.println("Na");in.close();}}}private static int huzhi(int a,int b) {//辗转相除法if(a==0||b==0) {return 1;}if(a%b==0) {return b;} else {return huzhi(b, a%b);}}
}

02 整数对最小和

import java.util.Scanner;
/*** Created with IntelliJ IDEA.* Author: Dawn* Date: 2022/03/19* Time: 20:20* Description:整数对最小和/字符串转数字+条件增位*//*给定两个整数数组array1 array2  数组元素按升序排列假设从arr1 arr2中分别取出一个元素,可构成一对元素现在需要取出k对元素,并对取出的所有元素求和计算和的最小值注意:两对元素对应arr1 arr2的下标是相同的视为同一对元素输入描述输入两行数组arr1 arr2每行首个数字为数组大小size   0<size<=100arr1,2中的每个元素   0< <1000接下来一行  正整数k   0<k<=arr1.size * arr2.size输出描述满足要求的最小值例子输入3 1 1 23 1 2 32输出4说明:用例中需要取两个元素,取第一个数组第0个元素与第二个数组第0个元素组成一个元素[1,1]取第一个数组第1个元素与第二个数组第0个元素组成一个元素[1,1]求和为1+1+1+1=4 ,满足要求最小*/public class deke02 {public static void main(String[] args) {Scanner in = new Scanner(System.in);int[] arr1 = Line());int[] arr2 = Line());int k = in.nextInt();int sum = 0;int i=0,j=0;while(i<k&&j<k){sum+=arr1[i];sum+=arr2[j];if(arr1[i]<arr2[j])j++;elsei++;}System.out.println(sum);in.close();}//字符串转数组private static int[] getArray(String line1) {String[] split1 = line1.split("\s+");int[] arr1 = new int[Integer.parseInt(split1[0])];for (int i = 1; i < split1.length; i++) {arr1[i - 1] = Integer.parseInt(split1[i]);}return arr1;}
}

03 n阶方阵和

import java.util.Scanner;
/*** Created with IntelliJ IDEA.* Author: Dawn* Date: 2022/03/20* Time: 09:20* Description:n阶方阵和/空格划分字符转数字*//*给出n阶方阵里所有数求方阵里所有数的和输入描述:输入有多个测试用例每个测试用例第一个第一个整数n   n<=1000 表示方阵阶数为n接下来是n行的数字,每行n个数字用空格隔开输出描述:输出一个整数表示n阶方阵的和例子:输入31 2 32 1 33 2 1输出18*/
public class deke03 {public static void main(String[] args) {Scanner in = new Scanner(System.in);int sum = 0;// 扫描下一行int n = Integer.Line());for (int i = 0; i < n; i++) {//以空格为界划分字符串String[] split = in.nextLine().split("\s+");for (int j = 0; j < n; j++) {//字符串转数字sum += Integer.parseInt(split[j]);}}System.out.println(sum);in.close();}
}

04 TLV解码

import java.util.Scanner;/*** Created with IntelliJ IDEA.* Author: Dawn* Date: 2022/03/20* Time: 10:00* Description:TLV编码/没懂这个题意思*//*TLV编码是按 Tag Length  Value格式进行编码的一段码流中的信元用tag标识,tag在码流中唯一不重复length表示信元value的长度  value表示信元的值码流以某信元的tag开头 ,tag固定占一个字节length固定占两个字节,字节序为小端序现给定tlv格式编码的码流以及需要解码的信元tag请输出该信元的value输入码流的16机制字符中,不包括小写字母且要求输出的16进制字符串中也不要包含字符字母码流字符串的最大长度不超过50000个字节输入描述第一行为第一个字符串 ,表示待解码信元的tag输入第二行为一个字符串, 表示待解码的16进制码流字节之间用空格分割输出描述输出一个字符串,表示待解码信元以16进制表示的value例子:输入:3132 01 00 AE 90 02 00 01 02 30 03 00 AB 32 31 31 02 00 32 33 33 01 00 CC输出32 33说明:需要解析的信源的tag是31从码流的起始处开始匹配,tag为32的信元长度为1(01 00,小端序表示为1)第二个信元的tag为90 其长度为2第三个信元的tag为30 其长度为3第四个信元的tag为31 其长度为2(02 00)所以返回长度后面的两个字节即可 为 32 33*/
public class deke04 {public static void main(String[] args){Scanner in = new Scanner(System.in);String tag = in.nextLine();String data = in.nextLine();//空格为界识别输入的字符串String[] split = data.split("\s+");for(int i = 0;i<split.length;){//长度为16进制转换的输入(占两个字节int length = Integer.parseInt(split[i+2]+split[i+1],16);//当识别到输入的解析信源时if(tag.equals(split[i])){StringBuilder builder = new StringBuilder();//这是为什么for(int j=i+3;j<i+3+length;j++){builder.append(split[j]).append(" ");}System.out.String());break;}else{i += length +3;}}in.close();}
}

05 猴子跳台阶

import java.util.Scanner;/*** Created with IntelliJ IDEA.* Author: Dawn* Date: 2022/03/20* Time: 11:28* Description:猴子跳台阶/f(30)=f(29)+f(27)的递归*//*一天一只顽猴想要从山脚爬到山顶途中经过一个有n个台阶的阶梯,但是这个猴子有个习惯,每一次只跳1步或3步试问?猴子通过这个阶梯有多少种不同的跳跃方式输入描述:输入只有一个这个数n    0<n<50此阶梯有多个台阶输出描述:有多少种跳跃方式实例:输入50输出122106097输入3输出2*/public class deke05 {public static void main(String[] args){Scanner in = new Scanner(System.in);int n&#Int();/*探求f(k)的递推关系上山最后一步到达第30级台阶,完成上山,共有f(30)种不同的爬法,到第30级之前位于哪一级呢?无非就是位于第29级(上跳1级即可到),有f(29)种;或者位于第27级(上跳3级即可到),有f(27)种;于是f(30)=f(29)+f(27)*/int[] f = new int[Integer.MAX_VALUE];f[1]=1;f[2]=1;f[3]=2;for(int i=4;i<=n;i++){f[i]=f[i-1]+f[i-3];}System.out.println(f[n]);in.close();}
}

06 GPU 算力

import java.util.Scanner;/*** Created with IntelliJ IDEA.* Author: Dawn* Date: 2022/03/20* Time: 14:08* Description:GPU算力/字符串转数组/先完成的单独的,剩余的作和完成*//*为了充分发挥Gpu算力,需要尽可能多的将任务交给GPU执行,现在有一个任务数组,数组元素表示在这1s内新增的任务个数,且每秒都有新增任务,假设GPU最多一次执行n个任务,一次执行耗时1s,在保证Gpu不空闲的情况下,最少需要多长时间执行完成。输入描述第一个参数为gpu最多执行的任务个数取值范围1~10000第二个参数为任务数组的长度取值范围1~10000第三个参数为任务数组数字范围1~10000输出描述执行完所有任务需要多少秒例子输入351 2 3 4 5输出6说明,一次最多执行3个任务  最少耗时6s例子2输入455 4 1 1 1输出5说明,一次最多执行4个任务  最少耗时5s*/
public class deke06 {public static void main(String[] args){Scanner in = new Scanner(System.in);int max = Integer.Line().trim());int length = Integer.Line().trim());int count = 0;//字符串转数组String[] split = in.nextLine().split(" ");int[] arr = new int[length];for (int i = 0; i < length; i++) {arr[i] = Integer.parseInt(split[i]);}int i=0;while(i<length){if(arr[i]<max){count++;i++;}elsebreak;}int sum=0;for(int j=i;j<length;j++){sum+=arr[j];}if(sum%max==0)count+=sum/max;elsecount+=sum/max+1;System.out.println(count);in.close();}
}

07 身高排序(绝对差值)

     小明今年升学到了小学1年纪来到新班级后,发现其他小朋友身高参差不齐然后就想基于各小朋友和自己的身高差,对他们进行排序请帮他实现排序输入描述第一行为正整数 h和n0<h<200 为小明的身高0<n<50 为新班级其他小朋友个数第二行为n各正整数h1 ~ hn分别是其他小朋友的身高取值范围0<hi<200且n个正整数各不相同输出描述输出排序结果,各正整数以空格分割和小明身高差绝对值最小的小朋友排在前面和小明身高差绝对值最大的小朋友排在后面如果两个小朋友和小明身高差一样则个子较小的小朋友排在前面示例一输入100 1095 96 97 98 99 101 102 103 104 105输出99 101 98 102 97 103 96 104 95 105说明  小明身高100班级学生10个  身高分别为

引用传递,妙啊

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>int g_height = 0;int Cmp(const void *a, const void *b)
{int x = *(int *)a;int y = *(int *)b;if (abs(x - 100) <  abs(y - 100)) {return -1;} else if (abs(x - 100) == abs(y - 100)) {return x - y;} else {return 1;}
}int main()
{int n, i;int *list;scanf("%d %d", &g_height, &n);list = malloc(sizeof(int) * n);memset(list, 0, sizeof(int) * n);for (i = 0; i < n; i++) {scanf("%d", &list[i]);}qsort(list, n, sizeof(int), Cmp);for (i = 0; i < n; i++) {printf("%d ", list[i]);}
}

08 区间字符串倒转输出

    输入一个英文文章片段翻转指定区域的单词顺序标点符号和普通字母一样处理例如输入字符串 I am a developer.[0,3]则输出 developer. a am I输入描述使用换行隔开3个参数第一个参数为文章内容 即英文字符串第二个参数为翻转起始单词下标,下标从0开始第三个参数为结束单词下标输出描述翻转后英文文章片段每个单词之间以一个半角空格分割输出例子输入I am a developer.03输出I a am developer.输入hello world!03输出world! hello输入字符串可以在前面或者后面包含多个空格但是翻转后的字符不能包括指定反转区间只有一个单词或无有效单词则输出EMPTY

本文发布于:2024-02-01 19:24:37,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170678667838911.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:华为   找工作   试题
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23