Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

你胡说,鉴定完毕

Posted by frkstyc at 2008-05-15 11:11:41
In Reply To:1006题系统会误判,不管你做对做不对,新手就不要在这个题上折磨自己了。PASS!! Posted by:kickflip at 2008-05-15 11:08:15
> 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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator