在线测试:Time Limit Exceeded

y2009270076 2011-09-18 08:06:29
北大的在线测试
题目在:http://poj.org/problem?id=1061
我用java写的,给的结果就是:Time Limit Exceeded,我知道java的运行速度比较慢,谁能帮我有话一下,可以在那个系统中通过,分就全部是谁的了?
贴上我的代码:

import java.util.*;
public class Main {
public static void main(String[] args) throws Exception{
int x=0,y=0,m=0,n=0,l=0,count = 0;
Scanner cin = new Scanner(System.in);
x = cin.nextInt();
y = cin.nextInt();
m = cin.nextInt();
n = cin.nextInt();
l = cin.nextInt();

if(m==n){
System.out.println("Impossible");
return;
}
while (x!=y) {
count++;
x+=m;
y+=n;
if (x>l-1) {
x=x%l;
}
if (y>l-1) {
y=y%l;
}
}
System.out.println(count);
}
}
...全文
150 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
y2009270076 2011-09-19
  • 打赏
  • 举报
回复
我重写了代码,想用相对速度来解决,结果:wrong answer,不明白为什么?
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception{
int x=0,y=0,m=0,n=0,l=0,count = 0;
Scanner cin = new Scanner(System.in);
x = cin.nextInt();
y = cin.nextInt();
m = cin.nextInt();
n = cin.nextInt();
l = cin.nextInt();

if(m==n){
System.out.println("Impossible");
return;
}
/*while (x!=y) {
count++;
x+=m;
y+=n;
if (x>l-1) {
x=x%l;
}
if (y>l-1) {
y=y%l;
}
}*/
else if(m>n){
if(x<y){
count=(y-x)/(m-n);
}else{//题目说过了 x!=y
count=(l-x+y)/(m-n);
}
}
else if(m<n){
if(x<y){
count=(l-y+x)/(n-m);
}else{
count=(x-y)/(n-m);
}
}
System.out.println(count);
}
}
y2009270076 2011-09-19
  • 打赏
  • 举报
回复
谢谢,我的写法太一般了,没有考虑到优化,我会改进的
dreamhunter_lan 2011-09-18
  • 打赏
  • 举报
回复
更像是算法的问题,看看这个行不行.
http://www.iteye.com/topic/480856

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧