我一直在尝试解决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;
}