等差数列

每日一练社区 2022-06-17 14:33:35

一个等差数列是一个能表示成a, a+b, a+2b,..., a+nb (n=0,1,2,3,...)的数列。在这个问题中a是一个非负的整数,b是正整数。
现给出三个整数,分别表示等差数列的第一项a、最后一项和公差b,求该数列的和。

输入描述:

输入三个整数,之间用空格隔开。第1个数作为首项,第2个数作为末项,第3个数作为公差.

输出描述:

输出占一行,包含一个整数,为该等差数列的和。如果所给三个整数,不能构成等差数列,则返回-1。

输入样例:

2 11 3

输出样例:

26

返回练习题答题页面

...全文
1395 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
懒得写了 2023-10-11
  • 打赏
  • 举报
回复 1

img

CSDN-Ada助手 2023-12-26
  • 举报
回复
@懒得写了 我想知道如何在Vue中使用插槽来解决组件的布局问题。能帮我解答一下吗?
m0_74371676 2023-10-08
  • 打赏
  • 举报
回复
import java.util.Scanner;

public class DengCha {
    public static void main(String args[]) {
        System.out.println("请输入三个数字,由系统判断是否构成等差数列");
        Scanner in = new Scanner(System.in);
        int a = in.nextInt();
        int b = in.nextInt();
        int c = in.nextInt();
        int sum = a + b + c;
        in.close();
        if ((a - c) % b != 0) {
            System.out.print("-1");
        } else {
            System.out.print(sum);
        }
    }
}
CSDN-Ada助手 2023-12-26
  • 举报
回复
@m0_74371676 您的代码实现了判断输入的三个数字是否构成等差数列,并计算了等差数列的和,很不错!如果需要在Vue中使用插槽解决组件美观问题,可以参考Vue的插槽文档,希望对您有所帮助。
jk7544 2023-10-06
  • 打赏
  • 举报
回复
# Python

```python
def calculate_arithmetic_series_sum(first, last, common_diff):
    n = (last - first) // common_diff + 1
    if (last - first) % common_diff == 0:
        series_sum = n * (first + last) // 2
        return series_sum
    else:
        return -1

输入首项、末项和公差

first_term, last_term, common_difference = map(int, input("输入三个整数,以空格分隔:").split())

计算等差数列的和

result = calculate_arithmetic_series_sum(first_term, last_term, common_difference)

输出结果

print(result)

```

CSDN-Ada助手 2023-12-26
  • 举报
回复
@jk7544 您的代码看起来很不错,可以计算等差数列的和。如果您有任何其他问题或需要进一步帮助,请随时告诉我。
随风万里无云 2023-10-05
  • 打赏
  • 举报
回复

C语言实现


#include<stdio.h>

int fun(int head,int end,int tol){
    int h1,e1,t1;
    int i,n;
    int sum=0;
    int all;
    h1=head,e1=end,t1=tol;
    for(i=0;sum!=end;i++){
        if(sum<=end){
            sum=h1+i*tol;
        }
        
        if(sum>end){
            
           // retrun -1;;
            break;
        }
        
        
    }
     n=i;
     all=h1+(n-1)*tol;
     if(all!=end){
        all=-1;
     }
     return all;
    
}
int main(){
    int on;
    int h,e,t;
    printf("输入三个数,第一位是首项A1,第二位是末项An,最后是公差d:\n");
    scanf("%d %d %d",&h,&e,&t);
    on=fun(h,e,t);
    printf("%d",on);
}
CSDN-Ada助手 2023-12-26
  • 举报
回复
@随风万里无云 您的C语言实现看起来有一些小问题,比如在循环中没有正确处理当和超过末项时的情况。另外,您的函数fun只返回了等差数列的最后一项,但题目要求输出整个等差数列的和。您可能需要重新思考一下算法的实现方式。
醴·梧·辉 2023-10-04
  • 打赏
  • 举报
回复 1

C语言代码


int main()
{
    int a = 0;
    int c = 0;
    int b = 0;
    scanf("%d %d %d", &a, &c, &b );
    if ((a - c) % b != 0)
    {
        printf("-1");
    }
    else
    {
        int n = (c - a) / b + 1;
        int s = n * (a + c) / 2;
        printf("%d\n", s);
    }
    return 0;
}
CSDN-Ada助手 2023-12-26
  • 举报
回复
@醴·梧·辉 您的C语言代码在解决等差数列求和的问题上是正确的,当输入的三个整数无法构成等差数列时,会输出-1。很好的解决方案!
AICodeThunder 2023-10-03
  • 打赏
  • 举报
回复

Python代码

# 方法一:直接套公式(生成浮点类型数字)
a1 = int(input())
an = int(input())
d = int(input())
s = (a1 + an) / 2 * ((an - a1) / d + 1)
print(s)

# ※推荐 方法二:生成等差数列直接用函数求和(是整型等差数列就输出整型,是浮点型等差数列就输出浮点型)
a1 = int(input())
an = int(input())
d = int(input())
ls = []

fill = a1
while (fill <= an):
    ls.append(fill)
    fill += d

print(sum(ls))

C++代码

// 方法一(只能保留一位小数)
#include <iostream>
using namespace std;

int main()
{
    int a1, an, d;
    cin >> a1 >> an >> d;
    double s = (a1 + an) / 2.0 * ((an - a1) / d + 1);
    cout << s;
    return 0;
}

// ※推荐 方法二
#include <iostream>
using namespace std;

int main()
{
    int a1, an, d;
    cin >> a1 >> an >> d;
    int arr[105] = {};
    
    int fill = a1;
    int index = 0;
    while (fill <= an)
    {
        arr[index] = fill;
        fill += d;
        index++;
    }
    
    int sum = 0;
    for (int i = 0; i < (an - a1) / d + 1; i++)
    {
        sum += arr[i];
    }
    
    cout << sum;
    return 0;
}
CSDN-Ada助手 2023-12-26
  • 举报
回复
@AICodeThunder 你可以使用Python代码中的方法一来计算等差数列的和,也可以使用方法二来生成等差数列并求和。对于C++代码,你可以选择方法一来直接套公式,或者使用方法二来生成等差数列并求和。希望对你有帮助!
飞乐鸟 2023-09-28
  • 打赏
  • 举报
回复
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int a = scanner.nextInt();
    int b = scanner.nextInt();
    int d = scanner.nextInt();

    // 判断是否能构成等差数列
    if ((b - a) % d != 0) {
        System.out.println(-1);
        return;
    }

    // 计算数列项数
    int n = (b - a) / d + 1;

    // 计算数列和
    int sum = (a + b) * n / 2;

    System.out.println(sum);
}
CSDN-Ada助手 2023-12-26
  • 举报
回复
@飞乐鸟 您的代码逻辑是正确的,通过判断能否构成等差数列,计算出数列的项数和和。如果能构成等差数列,就输出数列的和;如果不能构成等差数列,就输出-1。很好的解决了这个问题。
fengyangjia 2023-09-21
  • 打赏
  • 举报
回复

a,b,c =map(int,input().split())
if (b-a)%c == 0:
    print(((b**2-a**2)/c+a+b)/2)
else:
    print(-1)
CSDN-Ada助手 2023-12-26
  • 举报
回复
@fengyangjia 你的代码逻辑是正确的,可以根据输入的首项a、末项b和公差c来计算等差数列的和。如果所给三个整数不能构成等差数列,则返回-1。很好!
心所向872 2023-09-18
  • 打赏
  • 举报
回复
a, b, c = map(int, input().split())
d = (b-a) / c + 1
e = (b-a) % c
if e != 0:
    print(-1)
else:
    f = d * (a+b) / 2
    print(int(f))
CSDN-Ada助手 2023-12-26
  • 举报
回复
@心所向872 根据你的计算方法,如果给定的三个整数无法构成等差数列,会输出-1,否则会输出该等差数列的和。这个方法是正确的,感谢你的分享。
jk_101 2023-09-18
  • 打赏
  • 举报
回复


```python
# 读取输入
input_str = input("请输入三个整数,用空格隔开:")
input_list = input_str.split()
if len(input_list) != 3:
    print(-1)
else:
    a, b, d = map(int, input_list)
    # 计算项数n
    n = (b - a) // d + 1
    # 判断是否能构成等差数列
    if n <= 0:
        print(-1)
    else:
        # 计算等差数列的和
        Sn = n * (2 * a + (n - 1) * d) // 2
        print(Sn)


```

CSDN-Ada助手 2023-12-26
  • 举报
回复
@jk_101 你的代码逻辑是正确的,通过读取输入的三个整数,计算出等差数列的和。如果能构成等差数列,则输出对应的和,否则输出-1。很好,你已经完成了这道习题的要求。
RedstoneCuberoot 2023-09-17
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <stdlib.h>

void solution(int arr[3]){
 
    // TODO: 请在此编写代码
    int x = arr[0],sub = arr[0];
    while (x < arr[1]){
        x += arr[2];
        sub += x;
    }
    if (x == arr[1]){
        printf("%d",sub);
    }
    else{
        printf("%d",-1);
    }

}

int main() {
    int arr[3];
    
    for (int i = 0; i < 3; i++)
    {
        scanf("%d", &arr[i]);
    }
    

    solution(arr);
    return 0;
}
CSDN-Ada助手 2023-12-26
  • 举报
回复
@RedstoneCuberoot 你好,根据你的代码,我发现你使用了一个循环来计算等差数列的和,这是一种有效的解决方法。不过在你的代码中,我建议你添加一些注释来解释你的解决方案,这样可以帮助其他人更好地理解你的代码。另外,你也可以考虑使用函数来封装你的解决方案,这样可以提高代码的可重用性。希望我的建议对你有所帮助!
  • 打赏
  • 举报
回复 1
    let a = prompt("a的值为1-9,请输入a的值:") - 0;
    let b = prompt("请输入b的值:") - 0;
    let c = prompt("请输入c的值:") - 0;
    // 定义空变量来存放等差数列的求和公式
    let sum;
    // 定义等差数列的和
    let sumnum=0;

    // 设立判断等差数列的条件
    if (a == b % c) {
        for (let i = a; i <= b; i++) {
            // 通过sum变量来得出等差数列的求和公式间接的去求出需要经过几次循环(i)得出b;
            sum = a + i * c;
            
            // 设立判断条件当sum变量与b值相等时则间接求出i
            if(sum==b){
                // console.log(i);
                // 得到i值后再次以i为循环次数循环
                for (var j = 0; j <= i; j++) {
                    sum=a+j*c;
                    // 将每次循环得到的等差数列存入sumnum变量中
                    sumnum+=sum;
                }
                console.log(sumnum);
            }
        }
    } else {
        console.log(-1);
    }
CSDN-Ada助手 2023-12-26
  • 举报
回复
@她再无杜朗护盾 你的代码逻辑基本正确,但是可以简化一下。你可以直接使用等差数列求和公式来计算等差数列的和,而不需要通过循环来逐个累加。另外,你的判断条件有些复杂,可以简化一下。希望这些建议对你有帮助。
A_Canan 2023-05-08
  • 打赏
  • 举报
回复 1

# 定义一个函数,用于求解等差数列的和
def solution(a, l, b):
    # 判断所给三个整数是否能构成等差数列
    if (l - a) % b != 0:
        # 如果不能,返回-1
        return -1
    else:
        # 如果能,计算项数n
        n = (l - a) // b + 1
        # 计算等差数列的和,利用公式Sn = n * (a + l) / 2
        s = n * (a + l) / 2
        # 返回等差数列的和
        return s

# 输入三个整数,用空格分隔,并转换为列表
a, l, b = map(int, input().split())
# 调用函数,求解等差数列的和,并输出结果
print(solution(a, l, b))
CSDN-Ada助手 2023-05-12
  • 举报
回复
@A_Canan 您好,根据您提供的代码,这是一个可以求解等差数列的和的Python函数。如果输入的三个整数可以构成等差数列,那么函数会返回这个等差数列的和,否则会返回-1。您可以尝试输入三个整数来测试一下这个函数。如果您有其他问题或疑惑,可以继续与我交流哦。

11,489

社区成员

发帖
与我相关
我的任务
社区描述
Study well and make progress every day
其他 企业社区
社区管理员
  • 每日一练社区
  • CSDN学习
  • 幻灰龙
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧