上海汉得公司的面试题,有兴趣的看看

lianglin999 2010-10-12 09:58:33
用编程语言实现以下各题,
1,求自然数10000以内所有11的倍数的和?
2,1+2+4+8+.......+2^100 = ?
3,有若干只鸡和兔,共30个头,100条腿,求有几只鸡几只兔?

求代码???
...全文
2499 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingwin0129 2012-10-21
  • 打赏
  • 举报
回复
//1,求自然数10000以内所有11的倍数的和?
int _tmain(int argc, _TCHAR* argv[])
{
int k=0;

for (int n=11;n<10000;n+=11)
{
k+=n;
}
printf("%d",k);


return 0;
}
千杯不醉-sen 2010-10-13
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 xwrcc 的回复:]
引用 2 楼 keyixuexi 的回复:
LZ的结贴率怎么得来的?????晕了。
LZ怎么不自己写点代码尼???????????路过,手上没代码,不写~飘过。


哈哈.你看得真仔细
[/Quote]
确实、、、

1、3没什么难度。

2、1+2+4+...+2^100 = 2^101-1 //考虑到末尾不会为0

#include <stdio.h>

int per[500];
int total;

void n_num(int number)
{
int i,j,temp,flag;
per[0] = 1;
total = 1;
for (i=1,flag=0;i<=number;i++)
{
for (j=0,temp=0;j<total;j++)
{
temp = per[j]*2+flag;
per[j] = temp%10;
flag = temp/10;
}
while (flag)
{
per[total++] = flag%10;
flag /= 10;
}
}
}

void main()
{
int i,number;
printf("Input number:");
scanf("%d",&number);
n_num(number);
printf("2^%d-1=",number);
for (i=total-1;i>=0;i--)
{
if(i == 0)
printf("%d",per[0]-1);
else
printf("%d",per[i]);
}
printf("\n共有%d位!\n",total);
}
////////////////////
2^101-1 = 2535301200456458802993406410751
共有31位!
xuke535010084 2010-10-13
  • 打赏
  • 举报
回复
long sum;
for(int i=11;i<10001;i+=11)
sum += i;
cout<<sum;

qiang a ?
jameswangsm 2010-10-13
  • 打赏
  • 举报
回复
挺无聊的题目。我回复纯粹是为了混资源分
Aguokeeryi 2010-10-13
  • 打赏
  • 举报
回复
第一个不用循环的看不明白;
第二个更看不懂。
  • 打赏
  • 举报
回复
第二题LS的大大基本解决了

第一题和第三题还是比较容易的。

第二题明显要大数运算了。LS的大大数组每个单元存放一个位数,有点浪费了,其实可以对1000000(多点也行)取模,这样一个单元就可以多放几位了,内存就更省了。

小弟愚见,大牛勿鄙
某某9 2010-10-13
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 cuglgeegee 的回复:]

第二题不就是0x 000F FFFF FFFF FFFF FFFF FFFF FFFF么。。。

从2进制看,1是1,2是10,4是100,8是1000……,加一起就是100个1,也就是12.5个字节的F
[/Quote]

jimneylee 2010-10-13
  • 打赏
  • 举报
回复
用数组的方法表示十进制每一位,这个思路不错,15楼朋友的方法,学习了
jimneylee 2010-10-13
  • 打赏
  • 举报
回复
个人认为凡是循环解第一道题,都不算答对,程序设计时,时间复杂性和空间复杂性很重要,我的思路跟楼上某兄弟一样,代码贴出,无注释,供交流!

#include <stdio.h>
#define NUMBER 10000
#define DEVIDE 11
void main()
{
int end = NUMBER / DEVIDE;

long sum = 0;
//sum = (1 + end) / 2 * end * DEVIDE;
//sum = (1 + end) * end * DEVIDE / 2;
sum = ((1 + end) * end * DEVIDE) >> 1;

printf("sum = %ld\n", sum);
}
hanyuwei0 2010-10-13
  • 打赏
  • 举报
回复
这是作业题吧
liuqichun2008 2010-10-13
  • 打赏
  • 举报
回复
学习第二题。。。
南之倩倩 2010-10-13
  • 打赏
  • 举报
回复
第2题,大数据的运算,用数组计算来实现了.
honemay 2010-10-13
  • 打赏
  • 举报
回复
第2题大数运算
1,3不难!!初级题!
cuglgeegee 2010-10-13
  • 打赏
  • 举报
回复
第二题不就是0x 000F FFFF FFFF FFFF FFFF FFFF FFFF么。。。

从2进制看,1是1,2是10,4是100,8是1000……,加一起就是100个1,也就是12.5个字节的F
luciferisnotsatan 2010-10-13
  • 打赏
  • 举报
回复
题都不难
ningzhanma1227 2010-10-13
  • 打赏
  • 举报
回复
新手来学习的。。
i不歪 2010-10-12
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 lianglin999 的回复:]
我的答案如下:
【1】

C/C++ code
int count =1;
int sum =0;
while(count < 10000)
{
sum += count;
count +=11;
}
printf("sum is %d", sum);


这段代码不对,count=0,才对
xwrcc 2010-10-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 keyixuexi 的回复:]
LZ的结贴率怎么得来的?????晕了。
LZ怎么不自己写点代码尼???????????路过,手上没代码,不写~飘过。
[/Quote]

哈哈.你看得真仔细
lianglin999 2010-10-12
  • 打赏
  • 举报
回复
我的答案如下:
【1】
	int count =1;
int sum =0;
while(count < 10000)
{
sum += count;
count +=11;
}
printf("sum is %d", sum);


【2】
	int i =1;
int sum = 0;
for (int j = 1; j <= 100; j++)
{
sum += i;
i *=2;
}
printf("sum is %d", sum);


【3】

int i = 0;
do
{
if ( i * 2 + (30-i)*4 ==100)
{
break;
}
i++;
} while (i <= 30);
printf("鸡:%d只, 兔: %d只\n", i, 30 - i);


但是第二个没法计算结果,2^100次太大了,不知道怎么处理啊?求指教
hjl0508 2010-10-12
  • 打赏
  • 举报
回复
初级题目!
加载更多回复(10)

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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