锁定老帖子 主题:华为-赛门铁克 笔试题
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-10
springfield 写道 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30
看这个字符串的最后一位是不是 6 2 8 4 0 这几个数就行了 (6的倍数的尾数为6,2,8,4,0) != (尾数为6,2,8,4,0的数是6的倍数) |
|
返回顶楼 | |
发表时间:2009-06-10
最后修改:2009-06-11
xichao007521 写道 其实这道题由一个很简单的解法,
初中时的一个定理,连续三个数一定能被3整除,比如123%3=0,234%3=0 题目中给出的String = "123456789123..."是9个为一组的连续的数。 所以: 1、判断String最后一位是否可以被2整除,是,执行2,否则String不能被6整除,退出。 2、length为String的长度,leftLength = length%3,将String最后几位(0-3位)相加,若不能被3整除,退出。 3、该String能被6整除。 代码清单如下: public static void main(String[] args) { // TODO Auto-generated method stub String str = "12345678912345678"; char ch[] = str.toCharArray(); int len = ch.length; if(Integer.parseInt(ch[len-1] + "") % 2 != 0) { System.out.print("该STRING不能被6整除"); } else { int leftLen = len % 3; int sum = 0; for(int i = leftLen - 1; i < len - 1; i++) { sum = Integer.parseInt(ch[i] + "") + sum; } if(sum % 3 != 0) { System.out.print("该STRING不能被6整除"); }else { System.out.print("该STRING能被6整除"); } } } 兄台! 你不觉得你的代码有问题么 打个比方 如果 String str="14";呢 |
|
返回顶楼 | |
发表时间:2009-06-10
reignile 写道 springfield 写道 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30
看这个字符串的最后一位是不是 6 2 8 4 0 这几个数就行了 (6的倍数的尾数为6,2,8,4,0) != (尾数为6,2,8,4,0的数是6的倍数) 按照你的道理 人有2条腿,那么有2条腿的就是人? |
|
返回顶楼 | |
发表时间:2009-06-11
最后修改:2009-06-11
public class MyFile { public boolean test(String str){ int b=0; char a[]=str.toCharArray(); if(Integer.parseInt(a[a.length-1]+"")%2!=0) return false; else{ for(int i=0;i<a.length;i++){ b+=a[a.length-1]; if(b>100000){ b=b%3; } } if(b%3==0) return true; else return false; } } } 个人意见 不对的地方希望大虾指导! |
|
返回顶楼 | |
发表时间:2009-06-11
yw404109794 写道 xichao007521 写道 其实这道题由一个很简单的解法,
初中时的一个定理,连续三个数一定能被3整除,比如123%3=0,234%3=0 题目中给出的String = "123456789123..."是9个为一组的连续的数。 所以: 1、判断String最后一位是否可以被2整除,是,执行2,否则String不能被6整除,退出。 2、length为String的长度,leftLength = length%3,将String最后几位(0-3位)相加,若不能被3整除,退出。 3、该String能被6整除。 代码清单如下: public static void main(String[] args) { // TODO Auto-generated method stub String str = "12345678912345678"; char ch[] = str.toCharArray(); int len = ch.length; if(Integer.parseInt(ch[len-1] + "") % 2 != 0) { System.out.print("该STRING不能被6整除"); } else { int leftLen = len % 3; int sum = 0; for(int i = leftLen - 1; i < len - 1; i++) { sum = Integer.parseInt(ch[i] + "") + sum; } if(sum % 3 != 0) { System.out.print("该STRING不能被6整除"); }else { System.out.print("该STRING能被6整除"); } } } 兄台! 你不觉得你的代码有问题么 打个比方 如果 String str="14";呢 你这就是典型的臆断需求。题目要你写适用各种字符串的算法了么? |
|
返回顶楼 | |
发表时间:2009-06-11
pipilu 写道 yw404109794 写道 xichao007521 写道 其实这道题由一个很简单的解法,
初中时的一个定理,连续三个数一定能被3整除,比如123%3=0,234%3=0 题目中给出的String = "123456789123..."是9个为一组的连续的数。 所以: 1、判断String最后一位是否可以被2整除,是,执行2,否则String不能被6整除,退出。 2、length为String的长度,leftLength = length%3,将String最后几位(0-3位)相加,若不能被3整除,退出。 3、该String能被6整除。 代码清单如下: public static void main(String[] args) { // TODO Auto-generated method stub String str = "12345678912345678"; char ch[] = str.toCharArray(); int len = ch.length; if(Integer.parseInt(ch[len-1] + "") % 2 != 0) { System.out.print("该STRING不能被6整除"); } else { int leftLen = len % 3; int sum = 0; for(int i = leftLen - 1; i < len - 1; i++) { sum = Integer.parseInt(ch[i] + "") + sum; } if(sum % 3 != 0) { System.out.print("该STRING不能被6整除"); }else { System.out.print("该STRING能被6整除"); } } } 兄台! 你不觉得你的代码有问题么 打个比方 如果 String str="14";呢 你这就是典型的臆断需求。题目要你写适用各种字符串的算法了么? 如果能做到,为什么不去做呢! |
|
返回顶楼 | |
发表时间:2009-06-11
yw404109794 写道 reignile 写道 springfield 写道 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30
看这个字符串的最后一位是不是 6 2 8 4 0 这几个数就行了 (6的倍数的尾数为6,2,8,4,0) != (尾数为6,2,8,4,0的数是6的倍数) 按照你的道理 人有2条腿,那么有2条腿的就是人? 汗你的理解力,等于和不等于看不懂吗 |
|
返回顶楼 | |
发表时间:2009-06-11
reignile 写道 yw404109794 写道 reignile 写道 springfield 写道 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30
看这个字符串的最后一位是不是 6 2 8 4 0 这几个数就行了 (6的倍数的尾数为6,2,8,4,0) != (尾数为6,2,8,4,0的数是6的倍数) 按照你的道理 人有2条腿,那么有2条腿的就是人? 汗你的理解力,等于和不等于看不懂吗 不好意思。。。。。我是说你引用的那位仁兄。。。。 我的错! |
|
返回顶楼 | |
发表时间:2009-06-11
Erecch 写道 pipilu 写道 yw404109794 写道 xichao007521 写道 其实这道题由一个很简单的解法,
初中时的一个定理,连续三个数一定能被3整除,比如123%3=0,234%3=0 题目中给出的String = "123456789123..."是9个为一组的连续的数。 所以: 1、判断String最后一位是否可以被2整除,是,执行2,否则String不能被6整除,退出。 2、length为String的长度,leftLength = length%3,将String最后几位(0-3位)相加,若不能被3整除,退出。 3、该String能被6整除。 代码清单如下: public static void main(String[] args) { // TODO Auto-generated method stub String str = "12345678912345678"; char ch[] = str.toCharArray(); int len = ch.length; if(Integer.parseInt(ch[len-1] + "") % 2 != 0) { System.out.print("该STRING不能被6整除"); } else { int leftLen = len % 3; int sum = 0; for(int i = leftLen - 1; i < len - 1; i++) { sum = Integer.parseInt(ch[i] + "") + sum; } if(sum % 3 != 0) { System.out.print("该STRING不能被6整除"); }else { System.out.print("该STRING能被6整除"); } } } 兄台! 你不觉得你的代码有问题么 打个比方 如果 String str="14";呢 你这就是典型的臆断需求。题目要你写适用各种字符串的算法了么? 如果能做到,为什么不去做呢! String str = "14" 结果是“该STRING不能被6整除” |
|
返回顶楼 | |
发表时间:2009-06-19
shuai45 写道 如果一个数能被2整除,又是3的倍数,那此数可以被6整除。所以取其尾数进行判断
public static void main(String[] args) { String str = "123456"; int sign = new Integer(String.valueOf(str.charAt(str.length()-1))); if(sign%2==0 && sign%3==0){ System.out.println("ok"); } } 大哥~长字符串好不好。你int能放多少东西啊. 能被2整除,和是3的倍数有区别么?是3的倍数不就是能被3整除么.... |
|
返回顶楼 | |