丢失的数字(面试题)
找一个数据流中丢失的一个数字。该数据流中一直是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;
}