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 justdone at 2008-08-23 20:31:07 on Problem 1006
穷举法 :

 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		String str = "";
		List<Integer> list = new LinkedList<Integer>();// 储存的结果
		Scanner s = null;
		try {

			int p = 0, e = 0, i = 0, d = 0;// 初始值
			int p1 = 1, e1 = 1, i1 = 1;// 真正的初始值
			int j = 1;// 循环的次数

			while (true) {
				str = in.readLine();// 从键盘读取一行
				s = new Scanner(str); // 对该行进行分割
                p = s.nextInt() % 23;
				e = s.nextInt() % 28;
				i = s.nextInt() % 33;// 获得初始值
				d = s.nextInt();
                if (p == -1 && e == -1 && i == -1 && d == -1) {
					in.close();
					break;
				}
				j = 1;
				while (true) {
					p1 = (j - p) % 23;
					e1 = (j - e) % 28;
					i1 = (j - i) % 33;
					if (p1 == 0 && e1 == 0 && i1 == 0 ) {
						if((j-d)>0)
						list.add(new Integer(j-d));
						else list.add(new Integer(j-d+21252));
						break;
						
					}
					j++;

				}
			}
		} catch (IOException v) {

			v.printStackTrace();
		}

		if (list != null)
			for (int i = 0; i < list.size(); i++) {
				System.out.println(list.get(i).toString());
 
			}
	}
	}

	
	
	
	
	
 中国剩余定理: 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class Main{

	public static void main(String[] args) {

		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		String str = "";
		List<Integer> list = new LinkedList<Integer>();// 储存的结果
		Scanner s = null;
		try {
			int p = 0, e = 0, i = 0, d = 0;// 初始值
			int res = 0;//结果
            while (true) {
				str = in.readLine();// 从键盘读取一行
				s = new Scanner(str); // 对该行进行分割
             	p = s.nextInt() % 23;
				e = s.nextInt() % 28;
				i = s.nextInt() % 33;// 获得初始值
				d = s.nextInt();
				s.close();
                if (p == -1 && e == -1 && i == -1 && d == -1) {
					in.close();
					break;
				}
				res = (5544*p+14421*e+1288*i-d+21252)%21252;
				if(res!=0)
				list.add(new Integer(res));
				else list.add(new Integer(res+21252));
			}
		} catch (IOException v) {
			v.printStackTrace();
        }
		if (list!= null)
			for (int i = 0; i<list.size();i++) {
				System.out.println("Case " + (i + 1)
						+ ": the next triple peak occurs in "
						+ list.get(i).toString() + " days.");
                   
			}

	}

}


   	
	
	
	
	
	
	
	


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