gpt4 book ai didi

java - 获取等差数列或等比数列中的下一个序列

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:37:44 26 4
gpt4 key购买 nike

我想制作一个应用程序,每行生成一个包含 3 个数字的序列,当它到达一个零序列时停止,然后打印它是算术级数还是几何级数以及该系列中的下一个数字。

示例输入:

4 7 10    
2 6 18
0 0 0

应该输出

AP 13    
GP 54

这是我的代码,我想知道它有什么问题,以及有哪些可能不适用于我的代码。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main
{
static String s="";
public static void main (String[] args) throws IOException
{
String c;

String a[];
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
do {
c= br.readLine();
a = c.split(" ");
if(c.charAt(0)!='0'){
calc(a[1], a[2]);
}
}while((c.charAt(0))!='0');
printer(s);
}
public static void calc(String a, String b){
int x = Integer.parseInt(a);
int y = Integer.parseInt(b);
if(y%x==0){
s += "GP" +" " + (y*(y/x)) + "z";
return;

}else{
s += "AP" + " " + (y + (y-x)) + "z";
return;
}
}
public static void printer(String s){
String p= "";
for(int i =0;i<=s.length()-1;i++){
if(s.charAt(i)!='z'){
p+= s.charAt(i);
}else{
System.out.println(p);
p= "";
}
}
}
}

最佳答案

您的问题在于您发现进程类型不正确。例如,0 4 8 显然是 AP,但您的算法会说它是 GP。又如:8 4 2是GP,但是2%4会返回false,表示是AP。此外,当提供的序列根本不是进展时,您不会处理案例。

很明显,所有 3 个数字都应该涉及。假设整数 a, b, c 形成 AP 或 GP,您需要找出它是哪个级数。可以使用简单的数学:

  1. 如果它们形成 AP,则 a + c = b + b。下一个元素是 c + c - b
  2. 如果它们形成 GP,则 a * c = b * b。下一个元素是 c * c/b

(请注意 + 变成 *- 变成 /,当你从 AP 切换到 GP)。

关于java - 获取等差数列或等比数列中的下一个序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30188479/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com