题意:
给出一些数字,要求每个数字都不一样需要增加几
思路:
先排序,然后一个个增加,最后求总和差
代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <fstream>
#include <cmath>
#include <ctime>
#include <cstdlib>
#include <algorithm>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <queue>
#include <iterator>
#include <vector> using namespace std; #define LL long long
#define INF 0x3f3f3f3f
#define MOD 1000000007
#define MAXN 10000010
#define MAXM 1000010 const int maxm = ;
int a[maxm]; //方法一: int main()
{
int n;
int sum;
while(scanf("%d", &n)==&&n)
{
memset(a, , sizeof(a));
int i;
pos = ;
for(i = ; i < n; i++ )
scanf("%d", &a[i]);
sort(a, a+n);
for(i = ; i < n; i++ )
{
while(a[i] <= a[i-])
{
a[i] += ;
sum += ;
}
}
printf("%d\n", sum);
} return ;
} //方法二: int main()
{
int n;
while(scanf("%d", &n) == )
{
memset(a, , sizeof(a));
int sum1 = , sum2 = ;
for(int i = ; i <= n; i++ )
{
scanf("%d", &a[i]);
sum1 += a[i];
}
sort(a+, a+n+);
sum2 = a[];
for(int i = ; i <= n; i++ )
{
if(a[i] == a[i-])
a[i]++;
else if(a[i] < a[i-])
a[i] = a[i-] + ;
sum2 += a[i];
}
printf("%d\n", sum2 - sum1);
}
return ;
}