首页 > 技术文章 > 找出1——n+1的数组中唯一重复的数

mutaohengheng 2016-01-07 08:05 原文

#include <stdio.h>
#include <stdlib.h>

/*
	给定含有n个元素的数组,
	其中存放了1-(n-1)之内的整数,
	只有一个整数是重复的,
	请找出这个数
*/

/*
	思路:
	num[0]+...+num[n-1] - (1+...+n)
*/

int main(){
	int n;
	while (printf("Please input n:\n"), fflush(stdin), scanf("%d", &n) != EOF){
		int *numbers = (int*)malloc(n*sizeof(int));
		for (int i = 0; i < n; ++i)
			scanf("%d", numbers + i);
		int sum = 0;
		for (int i = 0; i < n; ++i)
			sum += numbers[i];
		printf("%d\n",sum - (int)(n-1)*n/2);
	}
	system("pause");
	return 0;
}

  

推荐阅读