fork download
  1. #include "bits/stdc++.h"
  2. using namespace std;
  3. #define dbg(var) cout<<#var<<"="<<var<<" "
  4. #define nl cout<<"\n"
  5. #define fr(i,n) for(int i=0;i<n;i++)
  6. #define rep(i,a,n) for(int i=a;i<=n;i++)
  7. #define fast ios::sync_with_stdio(false);cin.tie(0);
  8. #define vi vector<int>
  9. #define vvi vector<vi>
  10. #define pb push_back
  11. #define fa(v) for(auto &i:v)
  12. #define all(v) v.begin(),v.end()
  13. #define sz(v) (int)(v.size())
  14. #define int long long
  15.  
  16. const int N = 1e6 + 10;
  17. vector<int> pr;int d[N+10];
  18. void sieve()
  19. {
  20. for(int i = 2; i <= N; i++)
  21. {
  22. if (d[i] == 0)
  23. {
  24. d[i] = i;
  25. pr.push_back(i);
  26. }
  27. for(auto x : pr)
  28. {
  29. if (x > d[i] || x * i > N)
  30. break;
  31. d[i * x] = x;
  32. }
  33. }
  34. }
  35.  
  36. ////////////// debugger class starts from here/////
  37. void __print(int x) {cout << x;}
  38. void __print(long x) {cout << x;}
  39. void __print(unsigned x) {cout << x;}
  40. void __print(unsigned long x) {cout << x;}
  41. void __print(unsigned long long x) {cout << x;}
  42. void __print(float x) {cout << x;}
  43. void __print(double x) {cout << x;}
  44. void __print(long double x) {cout << x;}
  45. void __print(char x) {cout << '\'' << x << '\'';}
  46. void __print(const char *x) {cout << '\"' << x << '\"';}
  47. void __print(const string &x) {cout << '\"' << x << '\"';}
  48. void __print(bool x) {cout << (x ? "true" : "false");}
  49.  
  50. template<typename T, typename V>
  51. void __print(const pair<T, V> &x) {cout << '{'; __print(x.first); cout << ','; __print(x.second); cout << '}';}
  52. template<typename T>
  53. void __print(const T &x) {int f = 0; cout << '{'; for (auto &i: x) cout << (f++ ? "," : ""), __print(i); cout << "}";}
  54. void _print() {cout << "]\n";}
  55. template <typename T, typename... V>
  56. void _print(T t, V... v) {__print(t); if (sizeof...(v)) cout << ", "; _print(v...);}
  57. #ifndef ONLINE_JUDGE
  58. #define debug(x...) cout << "[" << #x << "] = ["; _print(x)
  59. #else
  60. #define debug(x...)
  61. #endif
  62.  
  63. /////// debugger class ends here /////////////
  64. int32_t main()
  65. {
  66. sieve();
  67. int a,b,n;
  68. cin >> a >> b >> n;
  69. pair<int,int> tot_div[b - a + 5];
  70.  
  71. rep(i,a,b){
  72. int at = i - a;
  73. tot_div[at].first = i;
  74. tot_div[at].second = 1;
  75. }
  76. for(int x: pr){
  77. if(x > b) break;
  78. int frst = (a + x - 1)/x * x;
  79. for(int i = (a + x - 1)/x * x; i <= b; i += x){
  80. int at = i - a;
  81. if(at < 0) continue;
  82. int cnt = 0;
  83. while(tot_div[at].first % x == 0){
  84. cnt++;
  85. tot_div[at].first /= x;
  86. }
  87. tot_div[at].second *= (1 + cnt);
  88. }
  89. }
  90. int ans = 0;
  91. rep(i,a,b){
  92. int at = i - a;
  93. if(tot_div[at].first > 1) tot_div[at].second *= 2;
  94. ans += (tot_div[at].second == n);
  95. // debug(i,tot_div[at].first, tot_div[at].second);
  96. }
  97. cout << ans;
  98.  
  99. }
Success #stdin #stdout 0.01s 12044KB
stdin
Standard input is empty
stdout
Standard output is empty