题目链接:P6352 [COCI2007-2008#3] CETIRI - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
题目描述
你原本有 4 个数,它们从小到大排序后构成了等差数列。
但是现在丢失了一个数,并且其余的三个数的顺序也被打乱了。
请你找出第四个数。
输入格式
输入一行三个整数。保证这些数字在 -100 ~ 100 之间。
输出格式
输出一行一个数,为第四个数。
方案可能不是唯一的,但保证一定存在,本题使用SPJ。
样例 #1
样例输入 #1
4 6 8
样例输出 #1
10
样例 #2
样例输入 #2
10 1 4
样例输出 #2
7
提示
说明
题目译自 COCI2007-2008 CONTEST #3 T1 CETIRI。
AC code 1:
#include<iostream>
#include<algorithm>
using namespace std;
int a[3];
int main()
{
int sum=0;
for(int i=0;i<3;i++)
{
cin>>a[i];
sum+=a[i];
}
sort(a,a+3);
int d=110; // 公差
for(int i=1;i<3;i++)
{
d=min(d,a[i]-a[i-1]);
}
// cout<<d<<endl;
int Sn; // 和
Sn=4*a[0]+4*(4-1)*d/2;
cout<<Sn-sum;
return 0;
}
AC code 2:
#include<iostream>
#include<algorithm>
using namespace std;
int a[3];
int main()
{
int sum=0;
for(int i=0;i<3;i++)
{
cin>>a[i];
sum+=a[i];
}
sort(a,a+3);
int d=110; // 公差
for(int i=1;i<3;i++)
{
d=min(d,a[i]-a[i-1]);
}
// cout<<d<<endl;
bool flag=0;
for(int i=1;i<3;i++)
{
int res=a[i-1];
if(res+d!=a[i])
{
flag=1;
cout<<res+d;
}
}
if(flag==0)
cout<<a[0]-d; // 或 cout<<a[2]+d;
return 0;
}