Répertoire d'articles
1. Sujet
Étant donné une séquence de nombres positifs, nous pouvons intercepter n'importe quel nombre de nombres consécutifs, appelés fragments. Par exemple, étant donné une séquence {0,1, 0,2, 0,3, 0,4}, nous avons (0,1) (0,1, 0,2) (0,1, 0,2, 0,3) (0,1, 0,2, 0,3, 0,4) (0,2) (0,2, 0,3) (0,2, 0,3, 0,4) (0,3) (0,3, 0,4) (0,4) Ces 10 fragments. Étant donné une séquence d'entiers positifs, trouvez la somme de tous les nombres contenus dans tous les fragments. Par exemple, le total de 10 fragments dans cet exemple est 0,1 + 0,3 + 0,6 + 1,0 + 0,2 + 0,5 + 0,9 + 0,3 + 0,7 + 0,4 = 5,0.
Format d'
entrée : saisissez la première ligne pour donner une valeur ne dépassant pas 1 0 5 10 ^ {5}1 0L'entier positif N de 5 représente le nombre de nombres dans la séquence. La deuxième ligne donne N nombres positifs ne dépassant pas 1,0, qui sont les nombres de la séquence, séparés par des espaces.
Format de sortie:
Sortez la somme des nombres contenus dans tous les segments de la séquence sur une seule ligne, avec une précision de 2 chiffres après la virgule décimale.
Échantillon d'entrée:
4
0,1 0,2 0,3 0,4
Échantillon de sortie:
5,00
2. Idées et précautions
Idées:
- La raison pour laquelle le point de test deux n'a pas pu rester bloqué au point de test deux était le problème du type de données.
- Je voulais au départ le faire avec la récursivité, car j'ai vu que cette question s'apparentait un peu à une méthode de calcul factoriel, mais elle a échoué.
- J'ai simplement arrangé les N = 4 cas énumérés dans le titre, puis j'ai trouvé les règles.
(0,1)
(0,1, 0,2)
(0,1, 0,2, 0,3)
(0,1, 0,2, 0,3, 0,4)
(0,2)
(0,2, 0,3 )
(0,2, 0,3, 0,4)
(0,3)
(0,3, 0,4)
(0,4)
Analyse: Le premier triangle est le plus complet.
- Le deuxième triangle supprime la première colonne de la première.
- Le troisième triangle supprime la première colonne du deuxième triangle.
Etc
Valeur x | Nombre de colonnes n | Numéro de chaque colonne m | Nombre total de colonnes h |
---|---|---|---|
0,1 | 1 | 4 (N = 4) | 1 |
0,2 | 2 | 3 (N-3) | 2 |
0,3 | 3 | 2 (N-2) | 3 |
0,4 | 4 | 1 (N-1) | 4 |
(i est la position où la valeur x est stockée dans le tableau et le premier nombre est stocké à la première place du tableau.)
Trois, code AC
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
double arr[100001]={
0};
int N;
cin>>N;
for(int i=1;i<=N;i++)
{
cin>>arr[i];
}
long double sum=0;
for(int j=1;j<=N;j++)
{
sum+=arr[j]*(N-j+1)*j;
}
printf("%.2llf",sum);
}
résultat: