题目名称:等差数列
时间限制:1000ms内存限制:256M
题目描述
一个等差数列是一个能表示成a, a+b, a+2b,..., a+nb (n=0,1,2,3,...)的数列。在这个问题中a是一个非负的整数,b是正整数。 现给出三个整数,分别表示等差数列的第一项a、最后一项和公差b,求该数列的和。
输入描述:
输入三个整数,之间用空格隔开。第1个数作为首项,第2个数作为末项,第3个数作为公差.
输出描述:
输出占一行,包含一个整数,为该等差数列的和。如果所给三个整数,不能构成等差数列,则返回-1。
示例
示例1
输入2 11 3
输出26
提示
无
#include <stdio.h>
int solution(int a, int n, int b){
int result=0;
int i;
int t=n;
int flag=a;
// TODO: 请在此编写代码
if(a<0||b<=0){
return -1;
}
if(a==t)
return a;
for(i=b;a<t;){
t=t-i;
result++;
if(a>t){
return -1;
}
}
while(result){
flag=flag+b;
a=a+flag;
--result;
}
return a;
}
int main() {
int m;
int n;
int p;
scanf("%d", &m);
scanf("%d", &n);
scanf("%d", &p);
int result = solution(m, n, p);
printf("%d", result);
return 0;
}
试题源自CSDN