阿里巴巴网站建设分析,软文有哪些推广渠道,wordpress文章归档 文章显示数量,怎么设置网站标题题目描述
某涉密单位下发了某种票据#xff0c;并要在年终全部收回。 每张票据有唯一的ID号。全年所有票据的ID号是连续的#xff0c;但ID的开始数码是随机选定的。 因为工作人员疏忽#xff0c;在录入ID号的时候发生了一处错误#xff0c;造成了某个ID断号#xff0c;另…题目描述
某涉密单位下发了某种票据并要在年终全部收回。 每张票据有唯一的ID号。全年所有票据的ID号是连续的但ID的开始数码是随机选定的。 因为工作人员疏忽在录入ID号的时候发生了一处错误造成了某个ID断号另外一个ID重号。 你的任务是通过编程找出断号的ID和重号的ID。 假设断号不可能发生在最大和最小号。
输入 要求程序首先输入一个整数N(N100)表示后面数据行数。接着读入N行数据。 每行数据长度不等是用空格分开的若干个不大于100个正整数不大于100000 请注意行内和行末可能有多余的空格你的程序需要能处理这些空格。 每个整数代表一个ID号。
输出 要求程序输出1行含两个整数m n用空格分隔。 其中m表示断号IDn表示重号ID 样例输入 2 5 6 8 11 9 10 12 9 样例输出 7 9
此题注意点
输入 没有给出确定的数的数目所以输入的时候先用getline()来获取一行字符.然后通过拆分转化位数字。
核心代码 1.getline(cin,line)//用来输入一行字符 2.stringstream ss(line); while (ssa[k]) k;//用于拆分
代码如下
#include iostream
#include sstream
#include algorithm
using namespace std;
const int N 100010;
int a[N];int main() {int cnt 0;string line;cin cnt;//注意后面有回车所以要用getline把回车抹掉getline(cin, line);int k 0;while (cnt--) {getline(cin, line);stringstream ss(line);while (ss a[k])k;}sort(a, a k);int b1 0, b2 0;for (int i 1; i k; i) {if (a[i] a[i - 1])b1 a[i];if (a[i] a[i - 1] 2)b2 a[i - 1] 1;}cout b2 b1 endl;return 0;
}为什么下面的代码只能拿50分ac不了呢
#include iostream
#include sstream
#include algorithm
using namespace std;
const int N 100010;
int a[N];int main() {int cnt 0;string line;cin cnt;getchar();int k 0;while (cnt--) {getline(cin, line);stringstream ss(line);while (ss a[k])k;}sort(a, a k);int b1 0, b2 0;for (int i 1; i k; i) {if (a[i] a[i - 1])b1 a[i];if (a[i] a[i - 1] 2)b2 a[i - 1] 1;}cout b2 b1 endl;return 0;
}
看完这个我相信你就知道了。
C关于getline()和getchar()的小点