Sličice

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.

Opis ulaza

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.

Opis izlaza

Za svaki od \(m\) upita ispisati broj u posebnom redu, koji predstavlja broj delioca broja \(k\) u odgovarajucem delu niza.

Primer

Ulaz

15 5 3 7 5 1 9 2 0 4 2 3

Излаз

3 2

Izlaz

Rešenje

Opis glavnog rešenja

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;
}