读入两个整数值 A 和 N,计算从 A开始的 N个连续整数的和。
注意,如果读入的 N为0或负数,则继续读取数字直至读入 N值为正整数为止。
输入格式
共一行,包含整数 A和若干个整数 N(不超过 100100 个)。
输出格式
一个整数,表示从 A开始的 N个连续整数的和。
数据范围
1≤A≤100,
−100≤N≤100
输入样例1:
3 2
输出样例1:
7
输入样例2:
3 -1 0 -2 2
输出样例2:
7
本题很简单。关键就是如果读入的 N为0或负数,则继续读取数字直至读入 N值为正整数为止这句话。其实也就是一行代码的事:
while(cin>>n,n<=0);
逗号操作符在C++中用于串联两个或多个表达式。它首先执行左侧的表达式(cin >> n
),然后执行右侧的表达式(n <= 0
),并返回右侧表达式的结果。while循环结构会重复执行括号中的条件表达式直到该表达式返回false
。
也就是说,这行代码的内涵是:
- 从标准输入读取一个值存入
n
。 - 如果
n
的值小于或等于0,那么继续读取下一个值。 - 重复上述过程直到读取到一个大于0的值为止。
这个循环没有主体({ ... }
),它的全部行为都在条件部分完成。
我写的AC代码如下,记得不要写错for循环的边界。
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,n;
int sum=0;
cin>>a;
while(cin>>n,n<=0);
for(int i=a;i<a+n;i++){
sum=sum+i;
}
cout<<sum;
return 0;
}