- 温张鑫 的博客
七月day2
- @ 2025-7-16 13:30:27
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;
}