蓝桥杯练习(七)等差数列

题目描述

数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一 部分的数列,只记得其中 N个整数。

现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有几项?

输入描述

在这里插入图片描述

输出描述

输出一个整数表示答案。

示例

5
2 6 4 10 20

结果

10

样例说明: 包含 2、6、4、10、20 的最短的等差数列是 2、4、6、8、10、12、14、16、 18、20。

思路:

如果一个数列公差为d,d=1和d不等于1的情况都是相同的,那么数字的个数就是(max-min)/d
注意:需要考虑到,当这个数列数字都相同,此时d=0,用原公式会报错,需要做特判,num=N

代码:

import java.util.Arrays;
import java.util.Scanner;

public class Main {
	static int gcd(int a,int b)
	{
		if(b==0) return a;
		else return gcd(b, a%b);
	}
	public static void main(String[] args) {
		int N;
		Scanner scanner = new Scanner(System.in);
		N = scanner.nextInt();
		int a[] = new int[N];
		// 输入数组
		for(int i=0;i<N;i++)
			a[i] = scanner.nextInt();
		Arrays.sort(a);
		int minYinZi = a[1]-a[0];
		for(int i=1;i<N-1;i++)
		{
			minYinZi = gcd(a[i+1]-a[i],minYinZi);
		}
		int num;
		if(minYinZi ==0) num = N;
		//else if(minYinZi==1)	num = a[N-1]-a[0]+1;
		else num =(a[N-1]-a[0])/minYinZi+1;
		System.out.println(num);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这道练习要求使用Java中的while循环来计算等差数列的均值。具体实现可以按照以下步骤: 1. 定义等差数列的首项和公差,以及计数器和累加器的初始值。 2. 使用while循环来遍历等差数列,每次将当前项加入累加器中,并将计数器加1。 3. 循环结束后,计算累加器的平均值,即为等差数列的均值。 以下是示例代码: ``` public class Main { public static void main(String[] args) { int a = 1; // 首项 int d = 2; // 公差 int n = 5; // 等差数列项数 int i = 1; // 计数器 int sum = ; // 累加器 while (i <= n) { sum += a; a += d; i++; } double avg = (double) sum / n; System.out.println("等差数列的均值为:" + avg); } } ``` ### 回答2: 等差数列是指每一项与它前一项的差值相等的数列,而等差数列的均值就是它所有数项的和除以它的项数。在Java中,我们可以使用循环语句while来计算等差数列的均值。 首先,我们需要让用户输入等差数列的首项、末项和公差,使用Scanner类来实现输入操作。然后,我们可以定义一个计数器变量count和一个累加器变量sum,用于统计等差数列的项数和所有项的和。接着,在while循环中,我们可以使用条件语句对循环的次数进行判断,以确保循环次数等于等差数列的项数。在每次循环中,我们可以将当前项的值累加到sum中,同时将count加1,以便于计算项数。最后,我们可以使用sum除以项数的方式,求出等差数列的均值。最后,使用System.out.println()语句输出均值结果即可。 下面是等差数列均值计算的Java代码示例: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输入等差数列的首项:"); int first = input.nextInt(); System.out.print("请输入等差数列的末项:"); int last = input.nextInt(); System.out.print("请输入等差数列的公差:"); int difference = input.nextInt(); int count = 0; int sum = 0; int n = (last - first) / difference + 1; while (count < n) { int current = first + count * difference; sum += current; count++; } double average = (double) sum / n; System.out.println("等差数列的均值为:" + average); } } 在以上代码中,我们首先使用Scanner类实现用户输入操作,然后通过循环计算等差数列的项数和所有项的和。最后,将所有项的和除以项数即可得到等差数列的均值,并使用System.out.println()输出结果。使用这种方式,我们可以方便地计算出任意等差数列的均值,并且代码具有很好的可读性和通用性。 ### 回答3: 等差数列是数学中的常见概念,它是指一个数列中每一项与它前面的项之差都相等的数列。循环是编程中的常用语句,它可以让一段代码重复执行多次。使用Java语言的while循环语句可以很方便地计算等差数列的均值。 在使用Java语言编写等差数列均值计算程序时,需要用到while循环语句。首先,需要输入等差数列的首项和公差,然后使用while循环语句计算等差数列的和以及项数。最后,计算出等差数列的均值并输出。 具体代码如下: ```java import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输入等差数列的首项:"); double first = input.nextDouble(); System.out.print("请输入等差数列的公差:"); double gap = input.nextDouble(); System.out.print("请输入等差数列的项数:"); double num = input.nextDouble(); double count = 0; int i = 1; while (i <= num) { count += first; first += gap; i++; } double average = count / num; System.out.println("等差数列的均值为:" + average); } } ``` 在上述代码中,我们首先使用Scanner类获取用户输入的等差数列的首项、公差和项数。然后使用while循环语句计算等差数列的和以及项数,最后计算出等差数列的均值并输出。 使用while循环语句计算等差数列均值的程序,可以让学习者更好地理解循环语句的使用方法,并且加深对数学中等差数列计算方法的理解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值