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