| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
1006题系统会误判,不管你做对做不对,新手就不要在这个题上折磨自己了。PASS!!1006我提交了将近15次(分三天)
用了好几种方法,都不行
包括测试数据
24 29 34 0 1
24 29 34 1 21252
47 57 67 0 1
47 57 67 1 21252
提交后也不成功
贴出其中两种(第二种是从牛人那借鉴过来的),供大家指正。
经过本人鉴定,ACM系统的1006题,系统的判定有误。鉴定完毕
附,解决方法1
package java_1006;
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner in=new Scanner(System.in);
final int P=23;
final int E=28;
final int I=33;
int number=1;
int pp,ee,ii,dd;
while((pp=in.nextInt())>-1
&&((ee=in.nextInt())>-1)
&&((ii=in.nextInt())>-1)
&&((dd=in.nextInt())>-1)){
Seed[] sd=new Seed[21253];
int i,j;
for(i=pp;i<sd.length;i+=P){
sd[i]=new Seed();
sd[i].setNn1(true);
}
for(j=pp-P;j>=0;j-=P){
sd[j]=new Seed();
sd[j].setNn1(true);
}
for(i=ee;i<sd.length;i+=E){
if(sd[i]==null){
sd[i]=new Seed();
}
sd[i].setMm2(true);
}
for(j=ee-E;j>=0;j-=E){
if(sd[j]==null){
sd[j]=new Seed();
}
sd[j].setMm2(true);
}
for(i=ii;i<sd.length;i+=I){
if(sd[i]==null){
sd[i]=new Seed();
}
sd[i].setKk3(true);
}
for(j=ii-I;j>=0;j-=I){
if(sd[j]==null){
sd[j]=new Seed();
}
sd[j].setKk3(true);
}
int k = dd + 1;
while (k < 21253) {
if (sd[k] == null) {
} else {
if (sd[k].peak()) {
break;
}
}
k++;
}
System.out.println("Case " + number++
+ ": the next triple peak occurs in "
+ (k-dd) + " days.");
/*int dd1,dd2,dd3;
dd1=dd2=dd3=dd;
while(dd1<pp&&dd2<ee&&dd3<ii){
}*/
}
}
}
class Seed{
boolean nn1=false;//P
boolean mm2=false;//E
boolean kk3=false;//I
public boolean isKk3() {
return kk3;
}
public void setKk3(boolean kk3) {
this.kk3 = kk3;
}
public boolean isMm2() {
return mm2;
}
public void setMm2(boolean mm2) {
this.mm2 = mm2;
}
public boolean isNn1() {
return nn1;
}
public void setNn1(boolean nn1) {
this.nn1 = nn1;
}
public boolean peak(){
return nn1==true&&mm2==true&&kk3==true;
}
}
解决方法2
package java_1006;
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
int j, p, e, i, d = 0, days[][][] = new int[23][28][33];
p = e = i = 0;
for (j = 0; j < 21252; j++) {
days[p][e][i] = j;
p = p == 22 ? 0 : p + 1;
e = e == 27 ? 0 : e + 1;
i = i == 32 ? 0 : i + 1;
}
Scanner in = new Scanner(System.in);
p = in.nextInt();
e = in.nextInt();
i = in.nextInt();
d = in.nextInt();
for (j = 0; p >= 0 && e >= 0 && i >= 0 && d >= 0; j++) {
p %= 23;
e %= 28;
i %= 33;
System.out.println("Case " + (j + 1)
+ " the next triple peak occurs in "
+ ((days[p][e][i] - d + 21251) % 21252 + 1) + " days.");
p = in.nextInt();
e = in.nextInt();
i = in.nextInt();
d = in.nextInt();
}
}
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator