点击跳转例题
思路:
直接进行模拟即可,需要注意的是有很多细节.
首先输入的问题:每个例子没有给出数量,那么我们怎么办呢? 当然是直接读入一整行!那么我们如何分割呢?这里引入stringstream(知识总结);
利用getline()读入一整行,stringstream来过滤掉空格;#include <bits/stdc++.h> #define int long long //(有超时风险) #define PII pair<int,int> #define endl '\n' #define LL __int128 using namespace std; const int N=2e5+10,M=1e3+10,mod=998244353,INF=0x3f3f3f3f; int a[N],b[N],c[N],pre[N]; signed main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int n;cin>>n; int cnt=0; while(cin>>a[++cnt]); int ans1,ans2; sort(a+1,a+cnt+1); for(int i=1;i<cnt;i++) { if(a[i]==a[i+1]) { ans1=a[i]; } if(a[i]==a[i+1]-2) { ans2=a[i]+1; } } //cout<<cnt<<endl; cout<<ans2<<' '<<ans1<<endl; return 0; }
#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; }
P8598 [蓝桥杯 2013 省 AB] 错误票据--2024蓝桥杯冲刺省一
于 2024-02-02 19:49:05 首次发布