丢失的数字(面试题)

找一个数据流中丢失的一个数字。该数据流中一直是0--------100000000(比较大)的数,求被丢失的数字。

@modified昨天很同学讨论的时候,题目需要加一个限制性的条件——N为四的倍数,即通过三个数,找出丢失的数字。

#include <stdio.h>
#include
<stdlib.h>
#define max_size 10000
void swap(int *x,int *y)
{
int tmp;
tmp
= *x;
*x = *y;
*y = tmp;
}
int main(int argc,char *argv[])
{

int array[max_size];
int i = -1;
int sum= 0;
while(++i < max_size)
array[i]
= i;
i
= atoi(argv[1]);
//i = 45;
swap(array+i,array+max_size-1);

for(i=0;i < max_size -1; ++i)
{

if((i%4 == 0)||(i%4 == 3))
sum
+= array[i];
else
sum
-= array[i];
}
printf(
"sum = %d\t,random = %d\n",sum,array[max_size-1]);
//if(array[max_size-1] < 0)
//array[max_size-1] = -array[max_size-1];
if((array[max_size-1]%4 == 2) ||(array[max_size-1]%4 == 1))
sum
+= 2 *(max_size -1);
else
sum
= -sum ;
printf(
"sum = %d 余数 = %d\n",sum,array[max_size-1]%4);
return 0;
}

转载于:https://www.cnblogs.com/westfly/archive/2011/05/16/lost_num_in_stream.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值