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 ysg860607 at 2007-08-16 02:10:03 on Problem 1012
下面的代码结果超时
就是输入一个算一个

Problem Id:1012  User Id:ysg860607 
Memory:712K  Time:3156MS
Language:Java  Result:Time Limit Exceed

Source 

import java.io.*;
public class Main{
	public static void main(String[] args) throws IOException {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		while (true) {
			int k = Integer.parseInt(in.readLine().trim());
			if (k == 0)
				return;
			int times = 0;
			he:while (true) {
				out: for (int p = k; p < 2 * k; p++) {
					int i = times * 2 * k + p + 1;					
						int t = 1;
						for (int j = 2 * k; j > k;) {
							t = (t + i - 1) % j;
							if (t == 0 || t > k) {
								j--;
								if (t == 0)
									t = 1;
								else
									t = t % j;
							} else
								continue out;
						}
						System.out.println(i);
						break he;
					}
				times++;
				}
			}
		}
	}


下面的代码就AC了,
我只是提前把结果算出来,存起来
然后直接输出
核心算法没有变,输入输出的策略改变,其结果相差十分大~!!
Source

Problem Id:1012  User Id:ysg860607 
Memory:1864K  Time:515MS
Language:Java  Result:Accepted

Source 

import java.io.*;
public class Main{
	static int[] a=new int[14];
	public static void main(String[] args) throws IOException {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		int k=1;
		while (k<14) {
			int times = 0;
			he:while (true) {
				out: for (int p = k; p < 2 * k; p++) {
					int i = times * 2 * k + p + 1;					
						int t = 1;
						for (int j = 2 * k; j > k;) {
							t = (t + i - 1) % j;
							if (t == 0 || t > k) {
								j--;
								if (t == 0)
									t = 1;
								else
									t = t % j;
							} else
								continue out;
						}
						a[k-1]=i;
						break he;
					}
				times++;
				}
			k++;
			}
		
		while(true){
			int m = Integer.parseInt(in.readLine().trim());
			if (m == 0)
				return;
			System.out.println(a[m-1]);
		}
		}
	}






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