Pasadas preguntas reales
texto
Tema Descripción
El profesor de matemáticas le dio a Xiao Ming un problema para sumar series aritméticas. Pero el descuidado Xiao Ming olvidó parte de la secuencia y solo recordó los N enteros.
Ahora, dados estos N enteros, Xiaoming quiere saber cuántos términos hay en la secuencia aritmética más corta que contiene estos N enteros.
输入格式
输入的第一行包含一个整数 N。
第二行包含 N 个整数 A₁, A₂, · · · , AN。(注意 A₁ ∼ AN 并不一定是按等差数列中的顺序给出)
输出格式
输出一个整数表示答案。
样例输入
5
2 6 4 10 20
样例输出
10
样例说明
包含 2、6、4、10、20 的最短的等差数列是 2、4、6、8、10、12、14、16、 18、20。
Ideas y códigos de temas
Idea: Dados n números, que forman parte de una sucesión aritmética, ¿cuántos términos mínimos tiene la sucesión aritmética? : ((el número más grande - el número más pequeño) / d ) + 1 , donde d es el máximo común divisor de toda la sucesión aritmética (la diferencia entre todos los números conocidos y el número más pequeño), y se debe tener especial consideración si d = 0, es el
código n:
#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
const ll maxn=1e6+10;
ll n;
ll a[maxn];
ll d[maxn];
ll gcd(ll a,ll b){
return b?gcd(b,a%b):a;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n);
ll ans=a[2]-a[1];
if(ans==0){
cout<<n;
return 0;
}
for(int i=3;i<=n;i++){
ans=gcd((ll)(a[i]-a[i-1]),ans);
}
ll cnt=(a[n]-a[1])/ans+1;
cout<<cnt;
return 0;
}
Epílogo
"Si estás indeciso, puedes preguntarle a la brisa primaveral, y si la brisa primaveral no habla, seguirás a tu corazón" significa: si tienes dudas sobre algo, pregúntale a la brisa primaveral cómo hacerlo. . "Si no está decidido, puede preguntarle a la brisa primaveral. Si la brisa primaveral no habla, seguirá su corazón". La oración proviene del "Jianlai" escrito por el escritor de Internet "Fenghuo Opera Princes". El texto original es: "Si estás indeciso, puedes preguntarle a la brisa primaveral. Sigue tu corazón".