选做了P1008,P1035,P1424
P1008 三连击
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i1 = 1;i1<=9;i1++){
for(int i2 = 1;i2<=9;i2++){
for(int i3 = 1;i3<=9;i3++){
for(int i4 = 1;i4<=9;i4++){
for(int i5 = 1;i5<=9;i5++){
for(int i6 = 1;i6<=9;i6++){
for(int i7 = 1;i7<=9;i7++){
for(int i8 = 1;i8<=9;i8++){
for(int i9 = 1;i9<=9;i9++){
int flag = Pan(i1,i2,i3,i4,i5,i6,i7,i8,i9);
if(flag == 1){
int a = 100*i1+10*i2+i3;
int b = 100*i4+10*i5+i6;
int c = 100*i7+10*i8+i9;
if(2*a==b&&3*a==c){
System.out.println(a+" "+b+" "+c);
}
}
}
}
}
}
}
}
}
}
}
}
private static int Pan(int i1, int i2, int i3, int i4, int i5, int i6,
int i7, int i8, int i9) {
// TODO Auto-generated method stub
if(i1!=i2&&i1!=i3&&i1!=i4&&i1!=i5&&i1!=i6&&i1!=i7&&i1!=i8&&i1!=i9){
if(i2!=i3&&i2!=i4&&i2!=i5&&i2!=i6&&i2!=i7&&i2!=i8&&i2!=i9){
if(i3!=i4&&i3!=i5&&i3!=i6&&i3!=i7&&i3!=i8&&i3!=i9){
if(i4!=i5&&i4!=i6&&i4!=i7&&i4!=i8&&i4!=i9){
if(i5!=i6&&i5!=i7&&i5!=i8&&i5!=i9){
if(i6!=i7&&i6!=i8&&i6!=i9){
if(i7!=i8&&i7!=i9){
if(i8!=i9){
return 1;
}
}
}
}
}
}
}
}
return 0;
}
}
P1035 级数求和链接
import java.util.Scanner;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
int k = scanner.nextInt();
double sum = 0;
if(k>=1&&k<=15){
for(int i=1;i<=1835422;i++){
sum = sum + 1.0/i;
if(sum>k){
System.out.println(i);
return;
}
}
}
}
}
这个题确定最大的i的范围,直接用了1000000来检测,输出发现到1835421的时候就可以大于15了,所以就可以确定更精确的范围。
P1424 小鱼的航程(改进版)
import java.util.Scanner;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
int b = scanner.nextInt();
int end = scanner.nextInt();
int sum = 0;
for(int i=b;i<b+end;i++){
int c = i%7;
if(c==0||c==6){
sum = sum;
}else{
sum = sum+250;
}
}
System.out.println(sum);
}
}
对7进行取余,余数即代表星期几
但是这里做的第一遍的时候遇到一个坑,第一个if判断语句的不能直接写为if(i%7 == 0||i%6==0),这样会把6的倍数也去除,因此应该用一个中间变量c来判断~