Kaidul

Nafeeur

Oct 2nd, 2014
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.27 KB | None | 0 0
  1. /****************************************************
  2.  * Author      : Kaidul Islam
  3.  * University  : Khulna University of Engr. and Tech.
  4. *****************************************************/
  5. #include <bits/stdc++.h>
  6. using namespace std;
  7. #define rep(i, n) for(__typeof(n) i = 0; i < (n); i++)
  8. #define rrep(i, n) for(__typeof(n) i = (n) - 1; i >= 0; --i)
  9. #define rep1(i, n) for(__typeof(n) i = 1; i <= (n); i++)
  10. #define FOR(i, a, b) for(__typeof(b) i = (a); i <= (b); i++)
  11. #define forstl(i, s) for (__typeof ((s).end ()) i = (s).begin (); i != (s).end (); ++i)
  12. #define INF (1 << 30)
  13. #define PI acos(-1.0)
  14. #define pb push_back
  15. #define ppb pop_back
  16. #define all(x) x.begin(), x.end()
  17. #define mem(x, y) memset(x, y, sizeof x)
  18. #define eps 1e-9
  19. #define pii pair<int, int>
  20. #define couple make_pair
  21. #define X first
  22. #define Y second
  23. #define vi vector<int>
  24. #define vpii vector< pii >
  25. #define si set<int>
  26. #define SDi(x) sf("%d", &x)
  27. #define SD2(x, y) sf("%d %d", &x, &y)
  28. #define SD3(x, y, z) sf("%d %d %d", &x, &y, &z)
  29. #define SDs(x) sf("%s", x)
  30. #define pf printf
  31. #define print(x) pf("%d ", x)
  32. #define println(x) pf("%d\n", x)
  33. #define output(x, y); pf("Case %d: %d", ++x, y)
  34. #define newLine pf("\n")
  35. #define sf scanf
  36. #define READ(f) freopen(f, "r", stdin)
  37. #define WRITE(f) freopen(f, "w", stdout)
  38. #if ( _WIN32 or __WIN32__ )
  39. #define LLD "%I64d"
  40. #else
  41. #define LLD "%lld"
  42. #endif
  43. #define SDl(x) sf(LLD, &x)
  44. #define MAX5 100000
  45. #define MAX7 10000000
  46. #define MAX9 1000000000
  47. #define MOD7 (MAX7 + 7)
  48. #define MOD9 (MAX9 + 9)
  49. typedef long long i64;
  50. typedef unsigned long long ui64;
  51. const i64 INF64 = (i64)1E18;
  52.  
  53. class TimeTracker {
  54.     clock_t start, end;
  55. public:
  56.     TimeTracker() {
  57.         start = clock();
  58.     }
  59.     ~TimeTracker() {
  60.         end = clock();
  61.         fprintf(stderr, "%.3lf s\n", (double)(end - start) / CLOCKS_PER_SEC);
  62.     }
  63. };
  64.  
  65. /** Implementation **/
  66.  
  67. #define Max 1000001
  68. int prime[(Max / 32) + 2];
  69. int sum[Max + 10];
  70.  
  71. int getDigitSum(int n) {
  72.     int ans = 0;
  73.     while(n) {
  74.         ans += (n % 10);
  75.         n /= 10;
  76.     }
  77.     return ans;
  78. }
  79.  
  80. int main(void) {
  81. #ifndef ONLINE_JUDGE
  82. //     READ("in.txt");
  83. //     WRITE("out.txt");
  84. #endif
  85.     int tcase, caseNo = 0;
  86.     SDi(tcase);
  87.     int t1, t2;
  88.     // pre-processing
  89.     int sqrtN = sqrt(Max);
  90.     int i = 0;
  91.     prime[i >> 5] |= (1 << (i & 31));
  92.     ++i;
  93.     prime[i >> 5] |= (1 << (i & 31));
  94.     for(i = 3; i <= sqrtN; i += 2) {
  95.         if( !(prime[i >> 5] & (1 << (i & 31))) ) {
  96.             for(int j = i * i; j <= Max; j += (i << 1)) {
  97.                 prime[j >> 5] |= (1 << (j & 31));
  98.             }
  99.         }
  100.         prime[(i + 1) >> 5] |= (1 << ((i + 1) & 31));
  101.     }
  102.     int offset = (sqrtN & 1) ? sqrtN + 1 : sqrtN;
  103.     for(int k = offset; k <= Max; k += 2) {
  104.         prime[k >> 5] |= (1 << (k & 31));
  105.     }
  106.  
  107.     sum[0] = sum[1] = 0;
  108.     int cnt = 0;
  109.     sum[2] = ++cnt;
  110.     for(int i = 3; i <= Max; i += 2) {
  111.         if( !(prime[i >> 5] & (1 << (i & 31))) ) {
  112.             int ret = getDigitSum(i);
  113.             if( !(prime[ret >> 5] & (1 << (ret & 31))) ) ++cnt;
  114.         }
  115.         sum[i] = sum[i + 1] = cnt;
  116.     }
  117.  
  118.     int ans;
  119.     while(tcase--) {
  120.         SD2(t1, t2);
  121.         ans = sum[t2] - sum[t1 - 1];
  122.         println(ans);
  123.     }
  124.     return EXIT_SUCCESS;
  125. }
Advertisement
Add Comment
Please, Sign In to add comment