#include #include #include using namespace std; #define REP(i,N) for(int i=0,_N=N;i<_N;++i) #define FOR(i,A,B) for(int i=(A),_N=(B);i<=_N;++i) #define FORD(i,A,B) for(int i=(A),_N=(B);i>=_N;--i) #define FIT(it,T,C) for(T::iterator it=(C).begin();it!=(C).end();++it) int divcount[10000]; int find_max(char word[], int pos) { int max_v=0; for( ; word[pos]!=0 ; ++pos) if(word[pos]=='X') break; if(word[pos] == 0) { int foo; sscanf(word, "%d", &foo); return divcount[foo]; } FOR(v, (pos==0?1:0), 9) { word[pos] = v+'0'; max_v >?= find_max(word, pos); word[pos] = 'X'; } return max_v; } int main() { divcount[0]=0; divcount[1]=1; FOR(num,2,9999) { int count = 0, i; for(i=1 ; (i*i) < num ; ++i) if(num%i == 0) count += 2; if(i*i == num) ++count; divcount[num] = count; } int _T; scanf("%d", &_T); while(_T--) { char input[5]; scanf("%s", input); printf("%d\n", find_max(input, 0)); } return 0; }