给定一个范围为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个数据求和,就是该数