#include <cstdio>
#include <cstdint>
#include <vector>
#include <bitset>
#include <tuple>
#include <algorithm>
#include <climits>
#include <numeric>
#include <iostream>
#include <cstring>
#include <iomanip>
#include <cmath>
using namespace std;
int t;
int maxFound = -1;
int A[10000000][10];
vector<int> inputData;
int getDigit(int a)
{
if(a<10)
{
return a;
}
int newa = 1;
while(a!=0)
{
newa *= a%10;
a/=10;
}
return getDigit(newa);
}
void init()
{
scanf("%d", &t);
int a;
for (int i = 0; i < t; i++)
{
scanf("%d", &a);
inputData.push_back(a);
maxFound=max(maxFound, a);
//cout<<"MAX: "<<maxFound<<endl;
//cout<<"new number:"<<a<<endl;
}
for(int j = 0;j<10;++j)
{
A[0][j]= 0;
}
for(int i = 1; i<=maxFound; ++i)
{
for(int j = 0;j<10;++j)
{
A[i][j]= A[i-1][j];
}
int newDigit = getDigit(i);
//cout<<"new digit:"<<newDigit<<endl;
A[i][newDigit] = A[i][newDigit] + 1;
}
}
int main()
{
init();
for(int i = 0;i<t; ++i)
{
bool addSpace = false;
for(int j = 0;j<10;++j)
{
if(addSpace)
{
printf(" ");
}
printf("%d", A[inputData[i]][j]);
addSpace = true;
}
printf("\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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | #include <cstdio> #include <cstdint> #include <vector> #include <bitset> #include <tuple> #include <algorithm> #include <climits> #include <numeric> #include <iostream> #include <cstring> #include <iomanip> #include <cmath> using namespace std; int t; int maxFound = -1; int A[10000000][10]; vector<int> inputData; int getDigit(int a) { if(a<10) { return a; } int newa = 1; while(a!=0) { newa *= a%10; a/=10; } return getDigit(newa); } void init() { scanf("%d", &t); int a; for (int i = 0; i < t; i++) { scanf("%d", &a); inputData.push_back(a); maxFound=max(maxFound, a); //cout<<"MAX: "<<maxFound<<endl; //cout<<"new number:"<<a<<endl; } for(int j = 0;j<10;++j) { A[0][j]= 0; } for(int i = 1; i<=maxFound; ++i) { for(int j = 0;j<10;++j) { A[i][j]= A[i-1][j]; } int newDigit = getDigit(i); //cout<<"new digit:"<<newDigit<<endl; A[i][newDigit] = A[i][newDigit] + 1; } } int main() { init(); for(int i = 0;i<t; ++i) { bool addSpace = false; for(int j = 0;j<10;++j) { if(addSpace) { printf(" "); } printf("%d", A[inputData[i]][j]); addSpace = true; } printf("\n"); } } |
English