#include <iostream> using namespace std; int main() { long l, r, n = 0; long akt, c; int i, podziel[10]; bool potycz; cin >> l >> r; for (i = 2; i <= 9; i++) podziel[i] = l % i; while (l <= r) { akt = l; i = 0; potycz = true; while (potycz && (akt > 0)) { c = akt % 10; switch (c) { case 0: c = 1; while (i > 0) { c = c * 10 + 1; akt *= 10; i--; } potycz = false; c = akt + c - l; break; case 1: akt = (akt - c) / 10; i++; break; default: if (podziel[c] == 0) { akt = (akt - c) / 10; i++; } else { potycz = false; c = 1; } } } if (potycz) { n++; c = 1; } //cout << l << " " << c << endl; l += c; for (i = 2; i <= 9; i++) podziel[i] = (podziel[i] + c) % i; } cout << n; return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #include <iostream> using namespace std; int main() { long l, r, n = 0; long akt, c; int i, podziel[10]; bool potycz; cin >> l >> r; for (i = 2; i <= 9; i++) podziel[i] = l % i; while (l <= r) { akt = l; i = 0; potycz = true; while (potycz && (akt > 0)) { c = akt % 10; switch (c) { case 0: c = 1; while (i > 0) { c = c * 10 + 1; akt *= 10; i--; } potycz = false; c = akt + c - l; break; case 1: akt = (akt - c) / 10; i++; break; default: if (podziel[c] == 0) { akt = (akt - c) / 10; i++; } else { potycz = false; c = 1; } } } if (potycz) { n++; c = 1; } //cout << l << " " << c << endl; l += c; for (i = 2; i <= 9; i++) podziel[i] = (podziel[i] + c) % i; } cout << n; return 0; } |