Dati su celi brojevi \(n, m, k \in [0,10^9]\) i niz od \(n\) celih brojeva, i \(m\) upita tipa \(i, j\) za svaki upit odrediti koliko delioca broja \(k\) se nalazi u podnizu od \(i\) tog indeksa do \(j\)-tog indeksa.
Sa standardnog ulaza se ucitava broj \(k\) i broj \(n\), a zatim i niz od \(n\) brojeva. Zatim se ucitava broj \(m\) i u sledecih \(m\) redova se nalaze upiti. Svaki upit se sastoji od dva broja \(i j\) koji predstavljaju granice niza, ukljuciti oba indeksa.
Za svaki od \(m\) upita ispisati broj u posebnom redu, koji predstavlja broj delioca broja \(k\) u odgovarajucem delu niza.
15 5 3 7 5 1 9 2 0 4 2 3
3 2
U ovom bloku se opisuje glavno rešenje zadatka.
#include <iostream>
#include <vector>
using namespace std;
int main(){
int n,k;
cin >> k >> n;
vector<int> niz(n);
int broj=0;
for(int i = 0; i < n; i++){
cin>>niz[i];
if(k % niz[i] == 0){
broj++;
}
niz[i]=broj;
}
cin>>n;
int a,b;
for(int i = 0; i < n; i++ ){
cin >> a >> b;
if(a == 0) cout << niz[b];
else cout << niz[b] - niz[a-1] << endl;
}
return 0;
}