69,371
社区成员
发帖
与我相关
我的任务
分享
int fun(int* nums, int count)
{
map<int, int> m;
for(int n = 0; n < count; n++)
{
auto ret = m.insert(std::pair<int,int>(nums[n], nums[n]));
if(ret.second == false)
return ret.first->second;
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100
int
receptionist(int numbers[])
{
int i;
int count[N] = {0};
for (i = 0; i < N + 1; i++)
{
if (count[numbers[i]]++)
{
return numbers[i];
}
}
return 0;
}
int
main(int argc, char *argv[])
{
int i, j;
int numbers[N + 1];
int pos, num;
srand(time(NULL));
pos = rand() % 101;
num = rand() % 100 + 1;
numbers[pos] = num;
j = 1;
for (i = 0; i < N + 1; i++)
{
if (i != pos)
{
numbers[i] = j++;
}
}
for (i = 0; i < N + 1; i++)
{
printf("%3d ", numbers[i]);
if (i % 10 == 9)
{
printf("\n");
}
}
printf("\n=======================================\n");
printf("%d\n", receptionist(numbers));
return 0;
}
int receptionist(int numbers[])
{
int s=0;
int *end=numbers +101;
while(numbers!=end)
s +=*numbers++;
return s-5050;
}
#include <stdio.h>
#include <windows.h>
#include <ctime>
//计算的原理
//(101个数字的和)-(1至100的和)==重复的那个数
int receptionist(int numbers[])
{
int sum101 = 0;
for (int i = 0; i < 101; ++i)
{
sum101 += numbers[i];
}
//自然数前n项[0-n]和公式n*(n-1)/2
//前101项和[0-100]
int sum100 = 101*(101 - 1)/2;
return sum101 -sum100;
}
int main()
{
//初始化101个数
int arr[101] = {0};
for (int i = 0; i < 100; ++i)
{
arr[i] = i + 1;
}
srand(unsigned(time(0)));
arr[100] = (rand() % 99) + 1;//这个是重复的数
//计算
printf("实际重复的是 %d\n", arr[100]);
printf("计算重复的是 %d\n", receptionist(arr));
system("pause");
}