Răspuns :
Numerele reale sunt ordonate strict crescator. Atunci, orice interval care cuprinde numere in ordine neconsecutiva(de exemplu elementul 1 si elementul 3) va fi un interval mai mare decat cele doua numere in ordine consecutiva(elementul 1 si elementul 2). Atunci, numarul minim de numere intregi ce se gaseste in toate intervalele este dat de numarul minim de numere din intervalele diferenta dintre numerele consecutive.
Numarul de numere intregi dintr-un interval este dat de diferenta dintre partile intregi ale celor doua numere reale, adaugand 1 daca primul nr real este de fapt intreg
Ex: [5.1]-[3.5]=5-3=2 2 numere intregi intr-adevar: 4 si 5
Dar daca am avea 3 in loc de 3.5
[5.1]-[3.0]+1=5-3+1=3 ceaa ce este corect: acum avem 3,4,5 numere intregi
#include <iostream>
#include <fstream>
#include <limits.h>
using namespace std;
int main(){
//int max este inclus in limits.h
int n,min=INT_MAX,diferenta;
double nr_trecut,nr_actual;
ifstream fin("numere.in");
fin>>n>>nr_trecut;
//scadem nr_trecut deja luat in considerare
n--;
while(n>0){
fin>>nr_actual;
if(nr_trecut-(int)nr_trecut==0){
diferenta=(int)nr_actual-(int)nr_trecut+1;
}
else{
diferenta=(int)nr_actual-(int)nr_trecut;
}
if(diferenta<min){
min=diferenta;
}
nr_trecut=nr_actual;
n--;
}
cout<<min;
return 0;
}
Numarul de numere intregi dintr-un interval este dat de diferenta dintre partile intregi ale celor doua numere reale, adaugand 1 daca primul nr real este de fapt intreg
Ex: [5.1]-[3.5]=5-3=2 2 numere intregi intr-adevar: 4 si 5
Dar daca am avea 3 in loc de 3.5
[5.1]-[3.0]+1=5-3+1=3 ceaa ce este corect: acum avem 3,4,5 numere intregi
#include <iostream>
#include <fstream>
#include <limits.h>
using namespace std;
int main(){
//int max este inclus in limits.h
int n,min=INT_MAX,diferenta;
double nr_trecut,nr_actual;
ifstream fin("numere.in");
fin>>n>>nr_trecut;
//scadem nr_trecut deja luat in considerare
n--;
while(n>0){
fin>>nr_actual;
if(nr_trecut-(int)nr_trecut==0){
diferenta=(int)nr_actual-(int)nr_trecut+1;
}
else{
diferenta=(int)nr_actual-(int)nr_trecut;
}
if(diferenta<min){
min=diferenta;
}
nr_trecut=nr_actual;
n--;
}
cout<<min;
return 0;
}