QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#96135 | #5344. Odd and Even Zeroes | zoker# | AC ✓ | 13ms | 5472kb | C++17 | 2.5kb | 2023-04-13 13:17:33 | 2023-04-13 13:17:57 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
//#pragma GCC optimize("O3,unroll-loops")
//#pragma GCC target("avx2,bmi,bmi2,lzcnt")
using ll = long long int;
using ull = unsigned long long int;
using vi = vector<ll>;
using ii = pair<ll,ll>;
using vii = vector<ii>;
using ld = long double;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
template<class T>
using ordered_set = tree < T, null_type, less<T>,
rb_tree_tag,
tree_order_statistics_node_update >;
#ifdef SA_DEBUG
template <class T>
void print(T a) {cerr << a << endl;}
template <class T, class... V>
void print(T a, V... b) {cerr << a << ", "; print(b...);}
#define dbg(...) cerr << "[" << __LINE__ << "] " << #__VA_ARGS__ << " :: ", print(__VA_ARGS__)
#else
#define dbg(...) 7
#endif
#define eb emplace_back
#define fi first
#define se second
const ll INFL = 2e18;
const int INF = 1e9;
const double PI = acos(-1);
const ll mod = 1e9+7;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
template<class T, class V>
ostream& operator << (ostream &s, pair<T, V> a){
s << a.fi << ' ' << a.se; return s;
}
template<class T, class V>
istream& operator >> (istream &s, pair<T, V> &a){
s >> a.fi >> a.se; return s;
}
template<class T>
ostream& operator << (ostream &s, vector<T> a){
for(int i = 0; i < (int)a.size(); i++){
if(i > 0)s << ' ' ;
s << a[i];
} return s;
}
template<class T>
istream& operator >> (istream &s, vector<T> &a){
for(T &x : a)s >> x;
return s;
}
template<class T>
void input(T a[], int l, int r, istream &s = cin){
while(l <= r)s >> a[l++];
}
template<class T>
void output(T a[], int l, int r, bool en = true, ostream &s = cout){
while(l <= r){ s << a[l++];
if(l <= r) s << ' ';
} if(en)s << "\n";
}
const int N = 1e6+3, K = 26;
//====================================================================//
map<ll, ll> mp;
ll solve(ll n){
if(n < 5)return n + 1;
if(mp.count(n))return mp[n];
ll x = 1;
int ev = 0;
while(x <= n)x *= 5, ev ^= 1;
x /= 5;
ll ans = solve(x - 1);
if(ev)ans += solve(n - x);
else ans += (n - x + 1) - solve(n - x);
return mp[n] = ans;
}
void testcase(ll n){
cout << solve(n) << "\n";
return;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
int T = INF;
//cin >> T;
for(int qq = 1; qq <= T; ++qq){
//cout << "Case #" << qq << ": ";
ll n;
cin >> n;
if(n == -1)break;
testcase(n);
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 2ms
memory: 3412kb
input:
2 3 10 100 1000 2000 3000 10000 100000 200000 -1
output:
3 4 6 61 525 1050 1551 5050 50250 100126
result:
ok 10 lines
Test #2:
score: 0
Accepted
time: 13ms
memory: 5472kb
input:
1807332722 817262418 986852752 493442298 734402612 191460341 1615843100 579526248 776247863 190158456 1882551618 1488678126 1885303503 415085162 1391030569 1596443829 490300179 1663490266 911893976 1959159065 1793979508 265301379 457629615 1382946943 1137064540 82942688 293372541 277413468 311026117...
output:
903689458 408657094 493459575 246737995 367226243 95730380 807945536 289779975 388154519 95080432 941294774 744366875 942672429 207554165 695550015 798248030 245166970 831775957 455973362 979593715 897010729 132663155 228824720 691507779 568569600 41473739 146701567 138719505 155526545 780003180 263...
result:
ok 1000 lines