给定一个范围为n的数组,数据由1~n的数组构成,且每个数最多只出现一次。现在给出n-1个数据,假设其中缺失一个数据num[ i ]。求这个数据是多少

解法:求出1+。。。+n的总和,再减去当前n-1个数据的总和。

/* ***********************************************
Author        :bo-jwolf
Created Time  :2015年02月21日 星期六 22:58:08
File Name     :313.cpp
************************************************ */

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
const int MAX = 1005;
int num[ MAX ];
int n;

int main()
{
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    while( cin >> n ){
		for( int i = 1; i < n; ++i )
			cin >> num[ i ];
		int sum = n / 2 * ( 1 + n );
		int temp = 0;
		for( int i = 1; i < n; ++i ){
			temp += num[ i ];
		}
		cout << ( sum - temp ) << endl;
	}
    return 0;
}

变形:找出一个数组中唯一一个重复的数据。

同上解法,由总数据减去前n个数据求和,就是该数