2个面试华为光网测试的有关算法题,没答出来,求解!

ddxxtt 2007-04-01 07:08:56
总共考了我4个题,前两个比较easy,后面两个小弟我就不会了,求解。
第一题:
数小孩的题,相信大家可能在学校的时候都作过,我上学的时候老师也讲过,可就是没好好听,一看见这道题的时候那叫一个后悔啊。
假设n个小孩围成一圈,每次数第m个小孩,该小孩被踢出来,请问当这帮小王八蛋只剩下一个人的时候是第几个人。(比如m=3,第一次数到第3个,第二次从第4个开始往下数,转圈数)写一个方法来实现。

第二题:
假设有个int型的数n,实现高低位的互换,比如12345,给换成52341,写一个方法实现n的高低位的互换。(n是几不知道)

谢谢大家拉。
...全文
9882 243 打赏 收藏 转发到动态 举报
写回复
用AI写文章
243 条回复
切换为时间正序
请发表友善的回复…
发表回复
linda_011 2010-02-26
  • 打赏
  • 举报
回复
晕死,第一题可以用那么简单的代码写,怎么那么多人用那么复杂的

int jasf(int n, int m)
{
int i = 2;
int res = 0;
while ( i <= n)
{
res = (res + m)%i;
i++;
}
return res+1;
}
korein 2009-09-21
  • 打赏
  • 举报
回复
看来看去,第二个题似乎大家的答案都是12345转成54321?楼主的答案是52341?
wenbest 2008-05-30
  • 打赏
  • 举报
回复
#include<iostream.h>
void main()
{
int a;
cin>>a;
while(a!=0)
{
cout<<a%10;
a=a/10;
}
}
jeremyliu821 2008-03-27
  • 打赏
  • 举报
回复
第二题发觉好多都理解错误。
高低位互换,不是倒排序。。。

输入 13579
输出 93571

好多人在做成97531。。。汗一个
吴冬冬 2008-03-27
  • 打赏
  • 举报
回复
int n=293800;
int a=(int)Math.pow(10, Math.floor((Math.log10(n))));
int m=n%10;
int k=n%a;
int l=n/a;
int r=(m*a+k)/10*10+l;
System.out.println(r);
nihuajie05 2008-03-21
  • 打赏
  • 举报
回复
如果华为就这个题目....我也去面下....尝试下
AshEmissary 2008-03-21
  • 打赏
  • 举报
回复
比较笨的算法,第一题:

public class GetNum {
public static void main(String []args){
int n = 10;
int[] arr = new int[n];
for (int x=0;x<n;x++){
arr[x] = x+1;
}
int m = 3;
int num = -1;
for (int x=0;x<arr.length-1;x++){
for (int y=0;y<m;y++){
num++;
if(num>arr.length-1)
num=0;
while(arr[num]==0){
num++;
if(num>arr.length-1)
num=0;
}
}
arr[num] = 0;
System.out.println("脚标为"+num+"的数被踢出");
}
for (int x=0;x<arr.length;x++){
if(arr[x]!=0)
System.out.println("留下的是脚标为"+x+"的数:"+arr[x]);
}
}
}
guoxiaopeng1982 2008-03-21
  • 打赏
  • 举报
回复
楼主你没去应该很高兴啊?你没看见搞技术跳楼的都是华为的啊………………
shili150 2008-03-21
  • 打赏
  • 举报
回复
标记一个
但我觉得应该有点规律把
应该用到n\m 和 n%m
zhaining522 2008-03-21
  • 打赏
  • 举报
回复
lz
看见了吗
楼上回帖的都是能进华为但是没去的
所以不去也没啥可惜的
到哪都能成为高手、
祝你好运
zryhy 2008-03-21
  • 打赏
  • 举报
回复
mark
jiahuafu 2008-03-21
  • 打赏
  • 举报
回复
第二题
/* 标准文档模板 */

/* 假设有个int型的数n,实现高低位的互换,比如12345,给换成52341?
一个方法实现n的高低位的互换。(n是几不知道) */

#include "Stdio.h"
#include "Conio.h"

int main(void)
{
int n;
char *nc;
register int i;

clrscr();
printf(" Please input number,we are convert:");

if( scanf("%d",&n))
{

printf(" your input:%d\n",n);

printf("\n your number:%s\n", itoa(n,nc,10));

printf("\n covert:%d\n",sizeof(nc)/sizeof(char));

for(i=sizeof(nc)/sizeof(char);i>=0;i--)
{

printf("%c",nc[i]);

}



}

else
{
printf("you must input number");

}



getch();
return 0;
}
bushuang 2007-09-21
  • 打赏
  • 举报
回复
mark
xiao50 2007-09-21
  • 打赏
  • 举报
回复
up....
南南北北 2007-09-21
  • 打赏
  • 举报
回复
鸟题,不会。
achao818 2007-09-21
  • 打赏
  • 举报
回复
mk
愤怒的小蒋 2007-09-21
  • 打赏
  • 举报
回复
哇噻
a8322185 2007-09-20
  • 打赏
  • 举报
回复
mark..明天来做
sutdy 2007-09-20
  • 打赏
  • 举报
回复
danjiewu(阿丹) 的方法简单
Mr_Weng 2007-09-18
  • 打赏
  • 举报
回复
第一题 递归
第二题 高位错位不懂 学习中!!!!!!!!错位是什么啊!!
加载更多回复(223)

23,407

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧