- 问题 1446: [蓝桥杯][2013年第四届真题]核桃的数量
就是求三个数的最小公倍数。最小公倍数 * 最大公约数=a * b
package 蓝桥;
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 c = sc.nextInt();
int d1=gcd(a,b);
int d2=gcd(d1,c);
System.out.println(d2);
}
private static int gcd(int a, int b) {
int X=a*b;
if(a<b) {
int r=0;
r=a;a=b;b=r;
}
while(true) {
int r=a%b;
if(r==0) {
return X/b;
}
else {
a=b;
b=r;
}
}
}
}
- 问题 1454: [蓝桥杯][历届试题]蚂蚁感冒
我第一时间想的是开一个100的数组进行模拟,但好像太复杂了,这个思路应该是正解
package 蓝桥;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
int a=sc.nextInt();
int sum=1,maybe=0;
boolean x=false;
for(int i=0;i<n-1;i++) {
int b=sc.nextInt();
if(a>0) {
if(Math.abs(b)>a&&b<0) {
x=true;
sum++;
}
if(Math.abs(b)<a&&b>0) {
maybe++;
}
}
if(a<0) {
if(Math.abs(b)<Math.abs(a)&&b>0) {
x=true;
sum++;
}
if(Math.abs(b)>Math.abs(a)&&b<0) {
maybe++;
}
}
}
if(x) sum+=maybe;
System.out.println(sum);
}
}
- 问题 1458: [蓝桥杯][2013年第四届真题]错误票据
建一个数组存数,用库函数直接排序,遍历排序部分,如果和后一位差值为2,本位值+1就是断号id,如果和后一位相等,本位值就是重号id。解题很容易,问题出在了数据的读入上,第一行的行号没用,直接读取数据就可以,但是在控制台却没有输出,但是提交可以通过。不太明白。
package 蓝桥;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
sc.nextInt();
int[] num = new int[100];
int count = 0;
while (sc.hasNextInt()) {
num[count++] = sc.nextInt();
}
Arrays.sort(num, 0, count);
for (int i = 0; i < count; i++) {
if (num[i] == num[i + 1] - 2) {
System.out.print(num[i] + 1);
break;
}
}
for (int i = 0; i < count; i++) {
if (num[i] == num[i + 1]) {
System.out.println(" " + num[i]);
break;
}
}
}
}