迅雷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;
}
}
