锁定老帖子 主题:华为-赛门铁克 笔试题
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-09
我 幼儿园 就能解这题了
|
|
返回顶楼 | |
发表时间:2009-06-09
sgp2004 写道 这应该是先看结尾是不是2 4 6 8 0 那就可以被2 整除
然后所有位相加,看看加和能不能被3 整除 然后就可以判断出了 貌似除了这种方法,没有其他的方法了吧... |
|
返回顶楼 | |
发表时间:2009-06-09
很容易,可被3整除,并且可被2整除即可被6整除;被2整除的数最后一位是偶数;被三整除的数各位相加的结果可以被3整除,一个循环就okay
|
|
返回顶楼 | |
发表时间:2009-06-09
华为笔试题目都差不多这个难度
华赛在成都吧 |
|
返回顶楼 | |
发表时间:2009-06-09
最后修改:2009-06-09
呵呵 这题还真不是很难~~ 不过华为我可不敢去 听说公司 送个床
既被2整除又被3整除 2整除看末尾,3整除,各位相加 |
|
返回顶楼 | |
发表时间:2009-06-09
sgp2004 写道 这应该是先看结尾是不是2 4 6 8 0 那就可以被2 整除
然后所有位相加,看看加和能不能被3 整除 然后就可以判断出了 还要考虑到字符串超级长,每位相加的结果可能溢出。 最好是累计相加到能被3整除的位数时,就抛弃前面计算过的字符串,从下一位开始重新计算能否被3整除。 |
|
返回顶楼 | |
发表时间:2009-06-09
truesmile 写道 sgp2004 写道 这应该是先看结尾是不是2 4 6 8 0 那就可以被2 整除
然后所有位相加,看看加和能不能被3 整除 然后就可以判断出了 还要考虑到字符串超级长,每位相加的结果可能溢出。 最好是累计相加到能被3整除的位数时,就抛弃前面计算过的字符串,从下一位开始重新计算能否被3整除。 这个办法好 从第一位开始加一旦和是三的倍数 扔掉 重新开始加没有加过的 可是 如果字符串 每一个数+到溢出也没有出现3的倍数怎么办 比如 String num = "166666666666666666666666666666666666666666666666666666666666666........" |
|
返回顶楼 | |
发表时间:2009-06-09
最后修改:2009-06-09
merman 写道 truesmile 写道 sgp2004 写道 这应该是先看结尾是不是2 4 6 8 0 那就可以被2 整除
然后所有位相加,看看加和能不能被3 整除 然后就可以判断出了 还要考虑到字符串超级长,每位相加的结果可能溢出。 最好是累计相加到能被3整除的位数时,就抛弃前面计算过的字符串,从下一位开始重新计算能否被3整除。 这个办法好 从第一位开始加一旦和是三的倍数 扔掉 重新开始加没有加过的 可是 如果字符串 每一个数+到溢出也没有出现3的倍数怎么办 比如 String num = "166666666666666666666666666666666666666666666666666666666666666........" 取3的余数呗,用余数跟后面的各位相加 |
|
返回顶楼 | |
发表时间:2009-06-09
最后修改:2009-06-10
我觉得用小学除法就够了
取第一位,比6大吗?对6取余,放余数在那里。 没6大,取下一位,当两位数,对6取余,放余数在下一位。 .... public class Div6 { public static void main(String[] args) { String bigNum = "123456789123456786"; final int DIV = 6; int len = bigNum.length(); char[] chars = bigNum.toCharArray(); int[] ints = new int[len]; for (int i = 0; i < len; i++) { ints[i] = chars[i] - '0'; } for (int i = 0; i < len-1; i++) { if(ints[i]<DIV){ ints[i+1] = (ints[i]*10+ints[i+1])%DIV; ints[i] = 0; }else{ ints[i] = ints[i]%DIV; i--; } for (int ii : ints) { System.out.print(ii); } System.out.println(); } System.out.println((ints[len-1]%DIV == 0 ? "":"不") + "能被整除"); } } PS: 想起来了,大一C语言做过... |
|
返回顶楼 | |
发表时间:2009-06-09
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30
看这个字符串的最后一位是不是 6 2 8 4 0 这几个数就行了 |
|
返回顶楼 | |