#include<bits/stdc++.h> using i64 = int64_t; i64 f(i64 x){ if(x <= 9) return x; i64 p = 1; while(x){ p *= (x % 10); x /= 10; } return f(p); } const int maxn = 1e7 + 1; void DoSlow(std::vector<std::pair<int64_t, int64_t>> q){ int S = q.size(); int ptr = 0; std::vector<int> ans(10); std::vector<std::vector<int>> res(S); for(int i = 1;i < maxn;i++){ ans[f(i)] += 1; while(q[ptr].first < i) ptr += 1; if(q[ptr].first == i){ res[q[ptr].second] = ans; } } for(auto &v : res){ for(auto &x : v){ std::cout << x << ' '; } std::cout << '\n'; } } int main(){ using namespace std; ios::sync_with_stdio(false), cin.tie(nullptr); int Q; cin >> Q; vector<pair<int64_t, int64_t>> quers(Q); for(int i = 0;i < Q;i++){ cin >> quers[i].first, quers[i].second = i; } sort(quers.begin(), quers.end()); if(quers.back().first <= maxn){ DoSlow(quers); return 0; } 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 51 52 53 54 55 56 57 | #include<bits/stdc++.h> using i64 = int64_t; i64 f(i64 x){ if(x <= 9) return x; i64 p = 1; while(x){ p *= (x % 10); x /= 10; } return f(p); } const int maxn = 1e7 + 1; void DoSlow(std::vector<std::pair<int64_t, int64_t>> q){ int S = q.size(); int ptr = 0; std::vector<int> ans(10); std::vector<std::vector<int>> res(S); for(int i = 1;i < maxn;i++){ ans[f(i)] += 1; while(q[ptr].first < i) ptr += 1; if(q[ptr].first == i){ res[q[ptr].second] = ans; } } for(auto &v : res){ for(auto &x : v){ std::cout << x << ' '; } std::cout << '\n'; } } int main(){ using namespace std; ios::sync_with_stdio(false), cin.tie(nullptr); int Q; cin >> Q; vector<pair<int64_t, int64_t>> quers(Q); for(int i = 0;i < Q;i++){ cin >> quers[i].first, quers[i].second = i; } sort(quers.begin(), quers.end()); if(quers.back().first <= maxn){ DoSlow(quers); return 0; } return 0; } |