丢失的数字(面试题)

找一个数据流中丢失的一个数字。该数据流中一直是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;
}
posted @ 2011-05-16 19:25  westfly  阅读(345)  评论(0编辑  收藏  举报