大家把在面试的难题公布一下,共同学习 第一题。。a,b两变量(应该是数值吧)a=a+b;b=a-b;a=a-b;交换成功第2题看不懂。。各人拉自己的不是全灭么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第一题解法如chcomic(痛苦的猪)所示;第二题:显然某一盏灯(编号K)被拉的次数等于K对小于或等于K的数取模为零的个数。如果被拉次数为偶数则这盏灯是亮的。解法如下(结果为9900):public class Ligh{ public static void main(String[] agrs){ int isLighNum = 0; for(int i = 1; i <=10000; i++){ if(Untitled5.isLigh(i)){ isLighNum++; } } System.out.println(isLighNum); } private static boolean isLigh(int lighNumber){ int drawNum = 0; for(int i = 1; i <= lighNumber; i++){ if(lighNumber % i == 0){ drawNum++; } } if(drawNum % 2 != 0){ return false; } return true; }} 有10000人,要经过一条道,道上有标了号码从1到10000的灯,全开的,要求每个人经过灯时将灯号码是自己序号的倍数灯拉一下,即取反,开的要关,关的要打开,问最后有多少亮的?你的意思是第一个人的序号是1,则把每个灯都拉一次,即全关,第二个人序号是2,则把偶数灯全开,以后依此类推,是不是这个意思,如果是这样,那答案是9900个灯全开,我不知道有没有巧妙的办法,我是用程序做的public class testlight { public static void main(String args[]) { thelight alight=new thelight(); alight.onandoff(); } } class thelight{ int a[]; int i,j,result; public void onandoff() { a=new int[10000]; for(i=0;i<10000;i++) { a[i]=1; } for(i=1;i<=10000;i++) { for(j=i;j<=10000;j++) { if(j%i==0) { if(a[j-1]==1) a[j-1]=0; else a[j-1]=1; } } } result=0; for(i=0;i<10000;i++) { result+=a[i]; } System.out.println(result); }} to roundside(世道轮回) 小弟刚学java不久,问一个菜鸟问题 Untitled5是啥,是Ligh的一个对象吗? 第一题也可这么做:swap(a,b){ xor a,b xor b,a xor a,b} 写错了,Untitled5应该改成Ligh。 巧解:某盏灯(编号为K)被拉的次数为K的因数个数加2(即1和K);而因数都是成对出现的(即K = a * b),显然,只有当a = b 时因数个数才可能为奇数;由此可推出被拉次数为奇数的灯(灭)个数为n(n * n <= 10000并且n为其中的最大整数),即n = 100;因此结果为:10000 - 100 = 9900 gamblerliu,可能是我直觉吧,别见怪。首先我个人觉得面向对象最基本的要求是建模必须符合现实,特别是人们求解某个问题的一般步骤,然后按着这些步骤一步一步分解问题,直至得到答案。比如这里的第二题,显然最基本的步骤应该是从头到尾一个灯一个灯的判断其是否是亮的,然后将是亮的灯的个数加起来,得到最后的结果。至于如何判断灯是否是亮的这类问题则应该是问题分解细化(也就是放到某个方法中处理)。另外,你的数组长度很长。:)欢迎你的mail讨论。 1. 用把两个变量加上特别的分隔符连成字符串放到变量1中,再截取变量1的部分给变量2,再把变量1中的分隔符去掉即完成交换。这样无论是数值型还是字符型变量都可以实现交换了。2. roundside(世道轮回)的方法很巧妙了。 问一问 javascript中自己写的函数里可以调用java封装好的方法吗? 使用数据库的网络编程,请帮忙分析具体要用到的技术和提供例子思路啊 请大家帮忙,有关线程问题 JCreator Pro(3.5),但不会单步调试, 请教JAVA打印发票设置纸张大小奇怪的问题 swing中的奇怪事情? 判断一个字符串是否包含另一个子字符串的api是什么? 处学者的简单问题。错误:Exception in thread "main" java.lang.NosuchMethodError:main,带原码; 菜鸟求助,做满天星小程序,总是提示错误 大虾帮忙看一行程序 相信自己,这个问题你一定能回答?
第二题:显然某一盏灯(编号K)被拉的次数等于K对小于或等于K的数取模为零的个数。如果被拉次数为偶数则这盏灯是亮的。解法如下(结果为9900):
public class Ligh{
public static void main(String[] agrs){
int isLighNum = 0;
for(int i = 1; i <=10000; i++){
if(Untitled5.isLigh(i)){
isLighNum++;
}
}
System.out.println(isLighNum);
} private static boolean isLigh(int lighNumber){
int drawNum = 0;
for(int i = 1; i <= lighNumber; i++){
if(lighNumber % i == 0){
drawNum++;
}
}
if(drawNum % 2 != 0){
return false;
}
return true;
}
}
{ public static void main(String args[])
{
thelight alight=new thelight();
alight.onandoff();
}
} class thelight{ int a[];
int i,j,result;
public void onandoff()
{
a=new int[10000];
for(i=0;i<10000;i++)
{
a[i]=1;
}
for(i=1;i<=10000;i++)
{
for(j=i;j<=10000;j++)
{
if(j%i==0)
{
if(a[j-1]==1)
a[j-1]=0;
else
a[j-1]=1;
}
}
}
result=0;
for(i=0;i<10000;i++)
{
result+=a[i];
}
System.out.println(result);
}
}
小弟刚学java不久,问一个菜鸟问题
Untitled5是啥,是Ligh的一个对象吗?
swap(a,b)
{
xor a,b
xor b,a
xor a,b
}
首先我个人觉得面向对象最基本的要求是建模必须符合现实,特别是人们求解某个问题的一般步骤,然后按着这些步骤一步一步分解问题,直至得到答案。比如这里的第二题,显然最基本的步骤应该是从头到尾一个灯一个灯的判断其是否是亮的,然后将是亮的灯的个数加起来,得到最后的结果。至于如何判断灯是否是亮的这类问题则应该是问题分解细化(也就是放到某个方法中处理)。
另外,你的数组长度很长。:)欢迎你的mail讨论。