P8598 [蓝桥杯 2013 省 AB] 错误票据--2024蓝桥杯冲刺省一
点击跳转例题
思路:
直接进行模拟即可,需要注意的是有很多细节.
首先输入的问题:每个例子没有给出数量,那么我们怎么办呢? 当然是直接读入一整行!那么我们如何分割呢?这里引入stringstream(知识总结);
利用getline()读入一整行,stringstream来过滤掉空格;
#include <bits/stdc++.h> #define int long long #define PII pair<int,int> using namespace std; const int N=10010; signed main() { int n;cin>>n; int a[N]; string s; //读掉缓冲区中的换行符. getline(cin,s); int cnt=0; for(int i=1;i<=n;i++) { getline(cin,s);//string中读入一整行 stringstream line; line << s ; //s输入到流中 while(line>>a[cnt])cnt++;//从流中输出 } sort(a,a+cnt); //找出重号和缺号 int ans1=0,ans2=0; for(int i=0;i<cnt-1;i++) { if(a[i]==a[i+1]&&!ans2) ans2=a[i]; if(a[i+1]-a[i]==2&&!ans1) ans1=a[i]+1; } cout<<ans1<<' '<<ans2<<endl; return 0; }