#include #include #include using namespace std; void assert(bool f) { if(!f) { int b = 0; printf("%d\n", 10/b); } } #define TLIMIT 10000 #define NLIMIT 100000000000000000LL long long dp[2][2][2][2]; int main() { int t; scanf("%d", &t); assert(1 <= t && t <= TLIMIT); while(t--) { long long n, num=0, den; scanf("%lld", &n); den = n*10; assert(1 <= n && n <= NLIMIT); string s; { ostringstream ss; ss << n; s = ss.str(); } int len = s.length(); for(char digit='0'; digit<='9'; digit++) { for(int i=0; i<2; i++) for(int j=0; j<2; j++) for(int k=0; k<2; k++) dp[len&1][i][j][k] = 0; dp[len&1][0][1][1] = dp[len&1][1][1][1] = 1; int nst, nlt, nfound; for(int i=len-1; i>=0; i--) for(int lt=0; lt<2; lt++) for(int st=0; st<2; st++) for(int found=0; found<2; found++) { bool c=i&1, ic=1-c; dp[c][lt][st][found] = 0; for(char cdigit='0'; cdigit<='9'; cdigit++) { if(!lt && cdigit > s[i]) break; nst = st || cdigit != '0'; nlt = lt || cdigit < s[i]; nfound = nst && (found || cdigit == digit); dp[c][lt][st][found] += dp[ic][nlt][nst][nfound]; } } num += dp[0][0][0][0]; } long long a = num, b = den, c; while(b) { c = a % b; a = b; b = c; } num /= a; den /= a; printf("%lld/%lld\n", num, den); } return 0; }