fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. void sieve(int A[],bool B[],int n){
  5. for(int i=0;i<=n;i++){
  6. A[i]=i;
  7. B[i]=true;
  8. }
  9. for(int i=2;i*i<=n;i++){
  10. if(B[i])
  11. for(int j=i*i;j<=n;j+=i){
  12. B[j]=false;
  13. A[j]=min(A[j],i);
  14. }
  15. }
  16. }
  17. vector<int> primefac(int n,int A[]){
  18. vector<int>p;
  19. while(n!=1){
  20. p.push_back(A[n]);
  21. n/=A[n];
  22. }
  23. return p;
  24. }
  25. int divisors( vector<int>p){
  26. int s=0,e=1;
  27. for(int i=0;i<p.size()-1;i++){
  28. if(p[i]!=p[i+1]){
  29. s+=2;
  30. e*=s;
  31. s=0;
  32. }
  33. else
  34. s++;
  35. }
  36. s+=2;
  37. e*=s;
  38. return e;
  39. }
  40.  
  41. int main(){
  42. int a,b,n,s=0;
  43. cin>>a>>b>>n;
  44. int*A=new int[max(a,b)+1];
  45. bool*B=new bool[max(a,b)+1];
  46. sieve(A,B,max(a,b));
  47. delete[]B;
  48. for(int i=min(a,b);i<=max(a,b);i++){
  49. if(i==1){
  50. if(n==1)
  51. s++;
  52. }
  53. else{
  54. if(divisors(primefac(i,A))==n)
  55. s++;
  56. }}
  57. delete[]A;
  58. cout<<s;
  59. return 0;
  60.  
  61.  
  62. }
Runtime error #stdin #stdout 0.01s 5424KB
stdin
Standard input is empty
stdout
Standard output is empty