我发现A那个感觉我的ac不多吧(70个),这期博客本人原本是不太想发出来的,但是我还是发出来了。
题目描述
你原本有 4 个数,它们从小到大排序后构成了等差数列。
但是现在丢失了一个数,并且其余的三个数的顺序也被打乱了。
请你找出第四个数。
输入格式
输入一行三个整数。保证这些数字在 -100\sim 100−100∼100 之间。
输出格式
输出一行一个数,为第四个数。
方案可能不是唯一的,但保证一定存在,本题使用SPJ。
输入输出样例
输入 #1
4 6 8
输出 #1
10
输入 #2
10 1 4
输出 #2
7
说明/提示
说明
题目译自 COCI2007-2008 CONTEST #3 T1 CETIRI。
兄弟萌就离谱,就离了个大普。
我们正常人的思维怎么做这道题?有人说了,你直接试一下到底是倒序等差数列还是正这的等差数列,再直接找公差求不就好了吗?小伙子想法非常好。
我放一下源码,待会再讲
#include<iostream>
using namespace std;
int a[4];
int main(){
int a,b,c;cin>>a>>b>>c;
if(a>b) swap(a,b);
if(a>c) swap(a,c);
if(b>c) swap(b,c);
if(b-a==c-b){
cout<<c+b-a;
}else if(b-a>c-b){
cout<<a+c-b;
}else{
cout<<b+b-a;
}
return 0;
}
为甚么我要这样写呢???
#include<iostream>
using namespace std;
int a[4];
int main(){
for(int i=1;i<=4;i++){
cin>>a[i];
}
int ans=a[3]-a[2];
cout<<a[3]+ans;
return 0;
}
这是我以前的代码,20分,就说明这只是其中的五分之一,所以我才会将第二段代码转换为第一段代码。很简单,求公差,很多if很多else if全都是这样的,特别是最后一个if和倒数两个else if,都能看懂,那开头我为什么要说我不想发出这一期博客呢,额主要啊是因为太简单了,没得讲,啊那为什么要发出来,那是因为我太皮了吗?不是。我帮你们复习一下else if或者教一下年纪比较小的同学们这一题的主要思路。
好了好了,我们下期再见,拜拜!