Используя Сито, но все еще получаю TLE - PullRequest
0 голосов
/ 08 ноября 2018

Я пытался решить NDIV проблему в SPOJ:

Input

Три целых числа a, b, n.

Выход

Вывести в единственной строке количество чисел n-делителей между a и b включительно.

Я использую метод Sieve, но все еще получаю TLE. Как лучше решить эту проблему? Вот мой код:

 #include <bits/stdc++.h>

    using namespace std;

    int main(){
        ios_base::sync_with_stdio(false);
        cin.tie(NULL);
        cout.tie(NULL);
        int a,b,n,i,j,count=0;
        cin >> a >> b >> n;
        vector<int> divisors(b+1,0);
        for(i=1;i<=b;i++){
            for(j=i;j<=b;j+=i){
                ++divisors[j];
            }
            if(i>=a){
                if(divisors[i] == n) count++;
            }
        }
        cout<<count<<"\n";
        return 0;
    }
...