使用筛网但仍获得TLE

时间:2018-11-08 20:35:04

标签: prime-factoring greatest-common-divisor sieve

我一直在尝试解决SPOJ中的 NDIV 问题:

  

输入

     

三个整数a,b,n。

     

输出

     

打印单行a和b之间的n除数的数量   包括在内。

我正在使用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;
    }

0 个答案:

没有答案