迅雷2019秋招笔试题(Java)
时间:20180912 19:00~20:30
一、红黑积木
题目大意:
有两种积木,一种是红色的积木A,表示正数,一种是黑色的积木B,表示负数,选择17个排成一排,使得相邻的7个积木只和小于0,请问这17个数的和最大是多少?
输入:
A,B 分别表示红色积木代表的数字和黑色积木代表的数字。
输出:
和最大是多少
样例输入:
10 -61
样例输出:
28
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 i = 1; for (i = 1; i <= 7; i++) { if (b * i + a * (7 - i) < 0) { break; } } int x = 3; if ((7 - i) < 3) { x = (7 - i) * a + (3 - (7 - i)) * b + (b * i + a * (7 - i)) * 2; } else { x = 3 * a + (b * i + a * (7 - i)) * 2; } ; System.out.println(x); } }
二、素勾股数
题目描述:
有 aa+bb = cc ,且,a、b、c互质,称为素勾股数,求满足 0<a<b<c<=N的(a,b,c)有多少组?
输入:
一个整数N
输出:
素勾股数的个数
样例输入:
10
样例输出:
1
/** * 直接暴力解决了 */ import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int count = 0; for(int i = 1; i <= N; i++) for(int j = i; j < N; j++) for(int k = j; k < N; k++) if(i*i+j*j==k*k) if(check(i,j)&&check(j,k)&&check(i,k)) count++; System.out.println(count); } //判断两个数是否互质 private static boolean check(int m,int n){ int temp = 0; while(true){ temp = m%n; if(temp == 0) break; else{ m = n; n = temp; } } if(n == 1) return true; else return false; } }