Advertisement
IISergeyII

Untitled

May 26th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.31 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <algorithm>
  4. #include <math.h>
  5. #include <vector>
  6. #include <fstream>
  7.  
  8. using namespace std;
  9.  
  10. int getSize(int x) {
  11.     int l = 0;
  12.     while (x > 0) {
  13.         l++;
  14.         x /= 10;
  15.     }
  16.  
  17.     return l;
  18. }
  19.  
  20. int countAmount(long long N, long long x) {
  21.  
  22.     if (x == 0) {
  23.         return N/10;
  24.     }
  25.  
  26.     int l = getSize(x);
  27.     int p = pow(10, l);
  28.     if (p % 10 != 0) p++;
  29.  
  30.     int myAns = 0;
  31.     myAns = N/p;
  32.     if ( N % p >= x)  {
  33.         myAns++;
  34.     }
  35.  
  36.     return myAns;
  37. }
  38.  
  39. int main()
  40. {
  41.  
  42.     long long k = 0;
  43.     long long M, N;
  44.     cin >> M >> N;
  45.  
  46.     int t = pow(10, N+1);
  47.     if (t % 10 != 0) t++;
  48.  
  49.     int D = pow(2, N);
  50.     if (D % 2 != 0) D++;
  51.  
  52.     //====================
  53.     long long num = 0;
  54.  
  55.  
  56.     //cout << d << endl;
  57.     long long ans = 0;
  58.  
  59.     if (N <= 3) {
  60.         for (int i = D; i < t; i+=D) {
  61.             ans += countAmount(M, i);
  62.             //cout << "i " << i << " ans " << ans << endl;
  63.         }
  64.     } else if (N == 4) {
  65.         for (long long i = 4; i <= M; i+=2) {
  66.            
  67.             if (M % D == 0) ans++;
  68.  
  69.         }
  70.     } else if (N == 5) {
  71.         for (long long i = 4; i <= M; i+=2) {
  72.             if (i/10000 > 0) {
  73.                 num = i;
  74.             } else if (i/1000 > 0) {
  75.                 num = (i-1)*10000 + i;
  76.             } else if (i/100 > 0) {
  77.                 num = (i-1)*1000 + i;
  78.             } else if (i/10 > 0) {
  79.                 num = (i-2)*10000 + (i-1)*100 + i;
  80.             } else {
  81.                 num = (i-4)*10000 + (i-3)*1000 + (i-2)*100 + (i-1)*10 + i;
  82.             }
  83.  
  84.             if (num % D == 0) ans++;
  85.  
  86.         }
  87.     } else {
  88.         for (long long i = 4; i <= M; i+=2) {
  89.             if (i/100000 > 0) {
  90.                 num = i;
  91.             } else if (i/10000 > 0) {
  92.                 num = (i-1)*100000 + i;
  93.             } else if (i/1000 > 0) {
  94.                 num = (i-1)*10000 + i;
  95.             } else if (i/100 > 0) {
  96.                 num = (i-1)*1000 + i;
  97.             } else if (i/10) {
  98.                 num = (i-2)*10000 + (i-1)*100 + i;
  99.             } else {
  100.                 num = (i-5)*100000 + (i-4)*10000 + (i-3)*1000 + (i-2)*100 + (i-1)*10 + i;
  101.             }
  102.  
  103.             if (num % D == 0) ans++;
  104.  
  105.         }
  106.     }
  107.  
  108.  
  109.     cout << ans;
  110.  
  111.     return 0;
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement