OJ2076
import java.util.Scanner;public class Main2076 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
int num=in.nextInt();
for(int k=1;k<=num;k++) {
double A = in.nextInt();
double B = in.nextInt();
double C = in.nextInt();
double temp1 = 0;
double temp2 = 0;
double end = 0;
if (A>=12) {
A = A-12;
}
temp1 = A*30+((B*60+C)/3600)*30;
temp2 = (B/60)*360+(C/60)*6;
end = Math.abs(temp1-temp2);
if (end<=180) {
System.out.println((int)end);
}else {
System.out.println((int)(360-end));
}
}
break;
}}}
这道题调了3、4遍才过,一直以为是算中间数组下标的时候出了问题,但其实是在算时针走动度数的时候没有算上秒针对时针的影响。 有时候总是会犯一些小错误,总觉着是逻辑方面不太严谨。不过没有关系,我相信我自己的逻辑思考,希望能够通过不断训练让自己的逻辑更加严谨。
OJ2083
import java.util.Scanner;public class Main2083 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
int num=in.nextInt();
for(int k=1;k<=num;k++) {
int people = in.nextInt();
int temp = 0;
int sum = 0;
int p1=0;
int p[] = new int[people];
for(int i=0;i<p.length;i++) {
p[i]=in.nextInt();
}
for(int i =0;i<p.length-1;i++) {
for(int j = 0;j<p.length-1-i;j++) {
if (p[j]>p[j+1]) {
temp = p[j];
p[j]=p[j+1];
p[j+1] = temp;
}
}
}
p1 = (people/2);
for(int i = 0;i<p.length;i++) {
sum = Math.abs(p[i]-p[p1])+sum;
}
System.out.println(sum);
}
break;
}}}
要说哪里有问题,那就是我又犯迷糊,在for循环中吧j写成了i。哭泣(灬ꈍ ꈍ灬)。
OJ2092
import java.util.Scanner;public class Main2092 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
int sum = in.nextInt();
int ji = in.nextInt();
double end = 0;
if (sum==0&&ji==0) {
break;
}
end = (double)(((double)sum+(double)Math.sqrt(sum*sum-4*ji)))/2;
if (end==(int)end) {
System.out.println("Yes");
}else {
System.out.println("No");
}
}}}
老天爷,这道题我本来是用最聊撇的方式,一个一个算。结果超时,看了别人的,才一拍大腿,我怎么就没想到还有二次方程式这玩意呢?! 再次哭泣,并表示长知识了。