今天是2024年3月1号,蓝桥杯比赛还有一个月的时间,虽说自己不指望拿奖吧,但是还是有些莫i名的焦虑,这道题目都做不出来,感觉自己真的有点菜啊!但是还好啦,我觉得是因为我没有题感,慢慢来呗,你也是
题解:
首先这道题的意思就是找出重复的数和断掉的数,那我刚开始就想岔了。想着要不把他放到一个数组里面去,先排个序,还后有重复的存在那就是重复的数,再遍历一下,缺少的就是断掉的数,复杂吧,然后看了别人的题解之后,我想着damn it !
首先就是这个票据是连续的,所以我们可以直接就用一个数组来存,下标就是票据中的数字,具体的数值那就是存放的次数。然后再遍历,出现一次且前后都有当下的数为0的那就代表是断号,出现两次的那就是重复的数。
Code:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,x,a[100005],ans1,ans2;
signed main(){
cin>>n;
while(cin>>x) a[x]++;
for(int i=1;i<10004;i++){
if(a[i-1]&&a[i+1]&&!a[i]){
ans1=i;
}
if(a[i]>1) ans2=i;
if(ans1&&ans2) break;
}
cout<<ans1<<" "<<ans2<<endl;
return 0;
}
感觉自己C++这个语言掌握的不是很熟练,我们俩很陌生,嗯,再处处!你加油哦~