#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; } |
English