10个免费的黑科技网站,wordpress 文章摘要字数,虚拟主机和网站的关系,磁力网站怎么做的源码目录
题目
思路和解题方法
复杂度 空间 时间
c 代码
Java 版本#xff08;仅供参考#xff09;
Python 版本#xff08;仅供参考#xff09; 题目 思路和解题方法 首先#xff0c;输入n和数组a的值。对数组a进行排序。计算数组a中相邻元素之间的差的最大公约数…目录
题目
思路和解题方法
复杂度 空间 时间
c 代码
Java 版本仅供参考
Python 版本仅供参考 题目 思路和解题方法 首先输入n和数组a的值。对数组a进行排序。计算数组a中相邻元素之间的差的最大公约数作为等差数列的公差。如果数组中所有元素都相等则输出n否则输出等差数列的项数。 复杂度 空间
对数组a进行排序的时间复杂度为O(nlogn)。计算最大公约数的时间复杂度为O(n)。整体时间复杂度为O(nlogn)。 时间
使用了一个大小为100001的长整型数组a空间复杂度为O(n)。 c 代码
#include iostream
#include algorithm
using namespace std;long long a[100001];int y(int a, int b) { // 求最大公约数的函数return b ? y(b, a % b) : a;
}int main() {int n;cin n; // 输入nfor (int i 0; i n; i)cin a[i]; // 输入数组a的值sort(a, a n); // 对数组a进行排序int d a[1] - a[0]; // 初始等差值for (int i 2; i n; i) {d y(d, a[i] - a[i - 1]); // 计算最大公约数}if (a[n - 1] a[0])cout n endl; // 如果所有元素都相等输出nelsecout ((a[n - 1] - a[0]) / d) 1 endl; // 输出等差数列的项数return 0;
}Java 版本仅供参考
import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt();long[] a new long[n];for (int i 0; i n; i) {a[i] scanner.nextLong();}Arrays.sort(a);long d a[1] - a[0];for (int i 2; i n; i) {d gcd(d, a[i] - a[i - 1]);}if (a[n - 1] a[0]) {System.out.println(n);} else {System.out.println((a[n - 1] - a[0]) / d 1);}}private static long gcd(long a, long b) {return b 0 ? a : gcd(b, a % b);}
}Python 版本仅供参考
def gcd(a, b): # 求最大公约数return a if b 0 else gcd(b, a % b)n int(input())
a list(map(int, input().split()))
a.sort() # 排序
d a[1] - a[0]
for i in range(2, n):d gcd(d, a[i] - a[i - 1])if a[n - 1] a[0]:print(n)
else:print((a[n - 1] - a[0]) // d 1)觉得有用的话可以点点赞支持一下。
如果愿意的话关注一下。会对你有更多的帮助。 每天都会不定时更新哦 人 。