快捷搜索: 王者荣耀 脱发

迅雷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;
	}
}
经验分享 程序员 微信小程序 职场和发展