#include <bits/stdc++.h> using namespace std; #define int long long // pair_hash z https://stackoverflow.com/questions/32685540/why-cant-i-compile-an-unordered-map-with-a-pair-as-key struct pair_hash { template <class T1, class T2> std::size_t operator () (const std::pair<T1,T2> &p) const { auto h1 = std::hash<T1>{}(p.first); auto h2 = std::hash<T2>{}(p.second); return h1 ^ h2; } }; unordered_map<pair<int,int>,int, pair_hash> ans; unordered_map<long long,long long> um; int simulate(int n){ if(um.contains(n)){ return um[n]; } string x = to_string(n); int ans2 = 1; for(auto z : x){ ans2 *= z-48; } if(ans2 <= 9){ return ans2; } int q = simulate(ans2); um[ans2] = q; um[n] = q; return q; } int32_t main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t; cin >> t; for(int i = 0; i<t; i++){ int x; cin >> x; for(int q = 1; q<=x; q++){ ans[{i,simulate(q)}]++; } for(int q = 0; q<=9; q++){ cout << ans[{i,simulate(q)}] << " "; } cout << "\n"; } }
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 51 52 53 | #include <bits/stdc++.h> using namespace std; #define int long long // pair_hash z https://stackoverflow.com/questions/32685540/why-cant-i-compile-an-unordered-map-with-a-pair-as-key struct pair_hash { template <class T1, class T2> std::size_t operator () (const std::pair<T1,T2> &p) const { auto h1 = std::hash<T1>{}(p.first); auto h2 = std::hash<T2>{}(p.second); return h1 ^ h2; } }; unordered_map<pair<int,int>,int, pair_hash> ans; unordered_map<long long,long long> um; int simulate(int n){ if(um.contains(n)){ return um[n]; } string x = to_string(n); int ans2 = 1; for(auto z : x){ ans2 *= z-48; } if(ans2 <= 9){ return ans2; } int q = simulate(ans2); um[ans2] = q; um[n] = q; return q; } int32_t main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t; cin >> t; for(int i = 0; i<t; i++){ int x; cin >> x; for(int q = 1; q<=x; q++){ ans[{i,simulate(q)}]++; } for(int q = 0; q<=9; q++){ cout << ans[{i,simulate(q)}] << " "; } cout << "\n"; } } |