Я пытался решить 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;
}