Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- ll s, l, k, dp[20], st[20];
- void read() {
- cin >> s;
- }
- ll slowve(ll n) {
- ll ans = 0;
- for (ll k = 1; k <= n; k++) {
- ll p = k;
- while (p) {
- if (p % 10 == 5) ans++;
- p /= 10;
- }
- }
- return ans;
- }
- void upd(int i, ll &s, ll &l) {
- l += (s % 10) * st[i];
- s /= 10;
- }
- ll solve(ll n) {
- s = n;
- dp[0] = st[0] = 1;
- for (int i = 1; i < 18; i++) {
- st[i] = st[i - 1] * 10;
- dp[i] = dp[i - 1] * 10 + st[i];
- }
- l = 0;
- k = s % 10 > 4;
- upd(0, s, l);
- for (int i = 1; s; i++) {
- k += dp[i - 1] * (s % 10);
- if (s % 10 == 5) k += l + 1;
- if (s % 10 > 5) k += st[i];
- upd(i, s, l);
- }
- // cout << k;
- return k;
- }
- signed main() {
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- // for (ll i = 1; i < 1000; i++) {
- // if (slowve(i) != solve(i)) {
- // cout << i << endl;
- // cout << slowve(i) << ' ' << solve(i);
- // return 0 ;
- // }
- // }
- read();
- cout << solve(s);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement