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

同样的算法 我用java 写老是超时 用c++ 写就过了 郁闷啊 谁解释解释

Posted by justdone at 2008-08-24 14:44:11 on Problem 1006
#include <cstdlib>
#include <iostream>
#include <list>

using namespace std;

int main(int argc, char *argv[])
{
    int p,e ,i ,d ;
    list<int> ls ;
    list<int>::iterator it;
    int res,k;
    while(true){
       scanf("%d %d %d %d",&p,&e,&i,&d);//输入四个值 
       if(p==-1&&e==-1 && i==-1 && d==-1){break ;}
          p = p%23 ;
          e = e%28 ;
          i = i%33 ;
          res = (5544*p+14421*e+1288*i-d+21252)%21252;
          if(res==0)
          ls.push_back(res+21252);
          else ls.push_back(res);   
      }
      for(it=ls.begin(),k=1;it!=ls.end();it++,k++){
       cout<<"Case "<<k<<": the next triple peak occurs in "<<*it<<" days."<<endl;
        } 
        system("PAUSE");
        return EXIT_SUCCESS;
}


顺利ac  



  用java 写 

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