Enunț
Într-o zi, Gigel a găsit pe masa tatălui său o foaie A4 pe care era trecut șirul denumit “devt” sub forma 1, 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 25, ... , n
. Dedesubtul acestui șir găsește un text alcătuit din k
întrebări de forma a
, b
cu semnificația “Câte numere din acest șir se află în intervalul [a,b]
?”.
Cerința
Ajutați-l pe Gigel să răspundă corect la toate cele k
întrebări.
Date de intrare
Fișierul de intrare devt.in
conține pe prima linie numerele naturale n
și k
, iar pe următoarele k
linii numerele a
, b
cu semnificația din enunț.
Date de ieșire
Fișierul de ieșire devt.out
va conține k
linii, pe fiecare linie i
aflându-se un număr natural, reprezentând răspunsul întrebării i
.
Restricții și precizări
0 ≤ a ≤ b ≤ n ≤ 100000
1 ≤ k ≤ 5000
n
aparține șirului devt
Exemplu
devt.in
25 5 3 7 12 20 3 4 16 24 12 24
devt.out
2 6 1 6 9
Explicație
În intervalul [3,7]
se află 2
numere din șir.
În intervalul [12,20]
se află 6
numere din șir.
În intervalul [3,4]
se află 1
număr din șir.
În intervalul [16,24]
se află 6
numere din șir.
În intervalul [12,24]
se află 9
numere din șir.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema devt:
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("devt.in");
ofstream fout("devt.out");
typedef int vect[100001];
vect sol,a;
int long long n,k,i,j,z;
int main()
{
fin>>n>>k;
a[1]=1;
for(i=2;i<=n;i++)
if(a[i]!=1)for(j=i*i;j<=n;j+=i)a[j]=1;
for(i=1;i<=n;i++)
{
sol[i]=sol[i-1];
if(a[i]==1)sol[i]++;
}
for(z=1;z<=k;z++)
{
fin>>i>>j;
if(a[i]==1)fout<<sol[j]-sol[i]+1<<"\n";
else fout<<sol[j]-sol[i]<<"\n";
}
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #1394 devt
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1394 devt de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!