题意:
给一串序列,长度混杂在这段序列里了,求序列的和。
思路:
由于最开始输入的时候,不知道有几个数,所以什么时候结束输入是个问题,那么就选择这种处理方式:以前读入一个数组的时候,输入完1个数,都要打一个空格,读入结束就打一个回车跳转到下一行,那现在,就用空格和回车来限定读入即可,即:
for(i = 1; ; i++) {
scanf("%d%c", &a[i], &c);
if(c == '\n') break;
}
然后标记一下即可,看哪个数等于总读入数 - 1,由于会有重复的,比如1,2,2,只有一个2代表个数,所以找到第一个2以后,标记一下即可。
本人AC代码:
#include <cstdio>
#include <cmath>
using namespace std;
const int maxn = 1e5 + 7;
int a[maxn];
char c;
int main() {
bool flg = 0;
int i;
for(i = 1; ; i++) {
scanf("%d%c", &a[i], &c);
if(c == '\n') break;
}
int sum = 0;
for(int j = 1; j <= i; j++) {
if(a[j] == i - 1 && !flg) {
flg = 1;
continue;
}
sum += a[j];
}
printf("%d\n", sum);
}