本文目录一览:
- 1、大学的 java 竞赛
- 2、北大OJ的1012题java做出莫名奇妙的runtime error
- 3、java写的一个程序在HOJ上提交后显示输出超限怎么回事啊
- 4、java怎样实现判断一个最高达1000位数字的整数是不是3的倍数。
- 5、如何调试在OJ中的代码
- 6、南阳理工OJ第一题A+B problem 用java编程在eclipse上能运行正确,为什么在OJ上提交时总是CompileError!
大学的 java 竞赛
现在没有单纯的java的比赛了,我参加过的就是非要是一些网站类的比赛,当然也不必要求用java。
在网站方面就是对于j2ee的学习了,这种比赛需要对数据处理的能力,比如java封转好的一些数据类型ArrayList或者哈希表之类,都要会用。
单纯从java语言本身来看的话,你首先要对面向对象有一个认识,其实就是java中的抽象机制,接口和继承。你还要了解java的内存机制,比如其著名的垃圾回收机制。
最后一个进阶的东西就是多线程,这是一个编程永恒的主题,并且java对于多线程支持的非常的好。如果以上java的知识你都掌握,就可以看看设计模式了,可以提高能力。当然也可以读java的源码
经验大概就是这些,比赛的一个关键是你有足够的技术积累,不单单是你的代码量,还有总结和自己的认识。
其实比赛而言,看的就是谁把知识理解的深刻,不要总是停留在表面,祝你取得好成绩。
北大OJ的1012题java做出莫名奇妙的runtime error
这样的检测没有进行有效地检测
当m = 5 以后,计算量比较大,时间就太长。。
#include stdio.h
void POJ1012();
//int result[]={0,2,7,5,30,169,441,1872,7632,1740,93313,459901,1358657,2504881};
int main()
{
POJ1012();
return 0;
}
void POJ1012()
{
int i,k;
int result[14]={0};
scanf("%d",k);
while(k!=0)
{
// printf("%d\n",result[k]);
int leftguys,m,flag,cur,next;
i=1;
while(true)
{
if(result[k]!=0)
{
printf("%d\n",result[k]);
break;
}
//m为移动的个数,cur为移动前索引,以0为起点
//m只能为k+1的整数倍或者是k+1的整数倍加1,
//因为只剩下K+1个人时,cur索引必位于k或k+1上
m=(k+1)*i;
for(int j=0;j2;j++)
{
cur=-1;
flag=true;
for(leftguys=2*k;leftguysk;--leftguys)
{
next = (cur+m)%leftguys;
if(nextk)
{
flag=false;
break;
}
cur = next-1;
}
if(flag)
{
printf("%d\n",m);
result[k]=m;
break;
}
m=(k+1)*i+1;
}
if(flag)
break;
++i;
}
scanf("%d",k);
}
}
java写的一个程序在HOJ上提交后显示输出超限怎么回事啊
oj超限一般分为运行内存超限和运行时间超限,可以从这两方面找找原因。
java怎样实现判断一个最高达1000位数字的整数是不是3的倍数。
能被3整除的数的特征:各个数位上的数相加之和必定为3的倍数。
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
try (Scanner sc = new Scanner(System.in))
{
while (sc.hasNext())
{
String num = sc.next();
int sum = 0;
for (int i = 0; i num.length(); i++)
sum += Integer.parseInt("" + num.charAt(i));
System.out.println(sum % 3 == 0 ? "yes" : "no");
}
}
}
}
如果使用BigInteger也行,只不过OJ平台可能对时空复杂度有要求,容易过不去。
import java.math.BigInteger;
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
final BigInteger bigThree = new BigInteger("3");
try (Scanner sc = new Scanner(System.in))
{
while (sc.hasNextBigInteger())
{
BigInteger num = sc.nextBigInteger();
System.out.println(num.mod(bigThree).equals(BigInteger.ZERO) ? "yes" : "no");
}
}
}
}
运行结果不变。
如何调试在OJ中的代码
Java-Preferences-,确保以下选项都勾选上
2. 应该就大功告成了 。
4,Properties;Installed JREs,选择Edit. 在Eclipse中,Window-Preferences-Libraries,Window-,选择Add,在JRE Home中选择JDK路径(因为只有JDK支持源码调试)。使用Alternate JRE中你创建的JDK. 右键你的工程项目,并且给它合适的命名。退出保存后;Compiler。
3,选择JDK路径,找到JRE System Library在Eclipse中,Java Build Path-Java-
南阳理工OJ第一题A+B problem 用java编程在eclipse上能运行正确,为什么在OJ上提交时总是CompileError!
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int a = cin.nextInt(), b = cin.nextInt();
System.out.println(a + b);
}
}
用这个试试