论坛首页 招聘求职论坛

华为-赛门铁克 笔试题

浏览 28003 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-06-09  
我 幼儿园 就能解这题了
0 请登录后投票
   发表时间:2009-06-09  
sgp2004 写道
这应该是先看结尾是不是2 4 6 8 0  那就可以被2 整除
然后所有位相加,看看加和能不能被3 整除
然后就可以判断出了

貌似除了这种方法,没有其他的方法了吧...
0 请登录后投票
   发表时间:2009-06-09  
很容易,可被3整除,并且可被2整除即可被6整除;被2整除的数最后一位是偶数;被三整除的数各位相加的结果可以被3整除,一个循环就okay
0 请登录后投票
   发表时间:2009-06-09  
华为笔试题目都差不多这个难度
华赛在成都吧
0 请登录后投票
   发表时间:2009-06-09   最后修改:2009-06-09
呵呵 这题还真不是很难~~ 不过华为我可不敢去 听说公司 送个床

既被2整除又被3整除
2整除看末尾,3整除,各位相加
0 请登录后投票
   发表时间:2009-06-09  
sgp2004 写道
这应该是先看结尾是不是2 4 6 8 0  那就可以被2 整除
然后所有位相加,看看加和能不能被3 整除
然后就可以判断出了

还要考虑到字符串超级长,每位相加的结果可能溢出。
最好是累计相加到能被3整除的位数时,就抛弃前面计算过的字符串,从下一位开始重新计算能否被3整除。
0 请登录后投票
   发表时间:2009-06-09  
truesmile 写道
sgp2004 写道
这应该是先看结尾是不是2 4 6 8 0  那就可以被2 整除
然后所有位相加,看看加和能不能被3 整除
然后就可以判断出了

还要考虑到字符串超级长,每位相加的结果可能溢出。
最好是累计相加到能被3整除的位数时,就抛弃前面计算过的字符串,从下一位开始重新计算能否被3整除。

这个办法好
从第一位开始加一旦和是三的倍数 扔掉 重新开始加没有加过的 可是 如果字符串 每一个数+到溢出也没有出现3的倍数怎么办 比如 String num = "166666666666666666666666666666666666666666666666666666666666666........"
0 请登录后投票
   发表时间:2009-06-09   最后修改:2009-06-09
merman 写道
truesmile 写道
sgp2004 写道
这应该是先看结尾是不是2 4 6 8 0  那就可以被2 整除
然后所有位相加,看看加和能不能被3 整除
然后就可以判断出了

还要考虑到字符串超级长,每位相加的结果可能溢出。
最好是累计相加到能被3整除的位数时,就抛弃前面计算过的字符串,从下一位开始重新计算能否被3整除。

这个办法好
从第一位开始加一旦和是三的倍数 扔掉 重新开始加没有加过的 可是 如果字符串 每一个数+到溢出也没有出现3的倍数怎么办 比如 String num = "166666666666666666666666666666666666666666666666666666666666666........"

取3的余数呗,用余数跟后面的各位相加
0 请登录后投票
   发表时间: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语言做过...
0 请登录后投票
   发表时间:2009-06-09  
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30
看这个字符串的最后一位是不是 6 2 8 4 0 这几个数就行了
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics