Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #include <algorithm>
- #include <math.h>
- #include <vector>
- #include <fstream>
- using namespace std;
- int getSize(int x) {
- int l = 0;
- while (x > 0) {
- l++;
- x /= 10;
- }
- return l;
- }
- int countAmount(long long N, long long x) {
- if (x == 0) {
- return N/10;
- }
- int l = getSize(x);
- int p = pow(10, l);
- if (p % 10 != 0) p++;
- int myAns = 0;
- myAns = N/p;
- if ( N % p >= x) {
- myAns++;
- }
- return myAns;
- }
- int main()
- {
- long long k = 0;
- long long M, N;
- cin >> M >> N;
- int t = pow(10, N+1);
- if (t % 10 != 0) t++;
- int D = pow(2, N);
- if (D % 2 != 0) D++;
- //====================
- long long num = 0;
- //cout << d << endl;
- long long ans = 0;
- if (N <= 3) {
- for (int i = D; i < t; i+=D) {
- ans += countAmount(M, i);
- //cout << "i " << i << " ans " << ans << endl;
- }
- } else if (N == 4) {
- for (long long i = 4; i <= M; i+=2) {
- if (M % D == 0) ans++;
- }
- } else if (N == 5) {
- for (long long i = 4; i <= M; i+=2) {
- if (i/10000 > 0) {
- num = i;
- } else if (i/1000 > 0) {
- num = (i-1)*10000 + i;
- } else if (i/100 > 0) {
- num = (i-1)*1000 + i;
- } else if (i/10 > 0) {
- num = (i-2)*10000 + (i-1)*100 + i;
- } else {
- num = (i-4)*10000 + (i-3)*1000 + (i-2)*100 + (i-1)*10 + i;
- }
- if (num % D == 0) ans++;
- }
- } else {
- for (long long i = 4; i <= M; i+=2) {
- if (i/100000 > 0) {
- num = i;
- } else if (i/10000 > 0) {
- num = (i-1)*100000 + i;
- } else if (i/1000 > 0) {
- num = (i-1)*10000 + i;
- } else if (i/100 > 0) {
- num = (i-1)*1000 + i;
- } else if (i/10) {
- num = (i-2)*10000 + (i-1)*100 + i;
- } else {
- num = (i-5)*100000 + (i-4)*10000 + (i-3)*1000 + (i-2)*100 + (i-1)*10 + i;
- }
- if (num % D == 0) ans++;
- }
- }
- cout << ans;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement