T1 缺失的数字

题意:有n+1个整数,将丢失的整数n找到。

思路:使用'(l + r) * (r-l+1) /2'高斯求和。

代码:

#include<bits/stdc++.h>
using namespace std;

int a[1100];
int main()
{
	freopen("num.in","r",stdin);
	freopen("num.out","w",stdout);
    int n,l = 1000,r = 1;
	int sum1 = 0,sum2 = 0;
	cin>> n;
	for(int i = 1;i <= n;i++)
	{
		cin>> a[i];
		if(l > a[i]) l = a[i];//l是最小数
		if(r < a[i]) r = a[i];//r是最大数
		sum1 += a[i];
	}
	sum2 = (l + r) * (r-l+1) /2;//使用高斯求和公式,求总和
	cout<< sum2 - sum1;//用总数减去其他数总和
	return 0;
}

T2 不及格

题意:有N名学生参加了一场考试,计算不及格的学生人数。

思路:使用if语句将得分和给出的数据进行比较。

代码:

#include<bits/stdc++.h>
using namespace std;

int main()
{
    freopen("score.in","r",stdin);
	freopen("score.out","w",stdout);
    int N, P;
    cin >> N >> P;
    
    int count = 0;
    for(int i = 1; i <= N; i++) {
        int score;
        cin >> score;
        if(score < P) {
            count++;
        }
    }
    
    cout << count;
    return 0;
}

T3 集会

题意:有N个人住在一条数轴上。 第i个人住在坐标 𝑋i处。求出N个人必须花费的最小总体力点数。

思路: 1.:获取人数N和每个人的坐标Xi。 ​2.对范围内的每个整数P,计算所有人员到达P的总体力花费。 3.在所有计算结果中,找到最小的总体力花费。

代码:

#include<bits/stdc++.h>
using namespace std;
int x[110];
int main()
{
	freopen("jihui.in","r",stdin);
	freopen("jihui.out","w",stdout);
	int N,ans = 2e9;
	cin>> N;
	for(int i = 1;i <= N;i++)
	{
		cin>> x[i];
	}
	for(int P = 1;P <= 100;P++)
	{
		int sum = 0;
		for(int i = 1;i <= N;i++)
		{
			sum += (P - x[i]) * (P - x[i]);
			
		}
		ans = min(ans,sum);
	}
	
	cout<< ans;
	return 0;
}