#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
using namespace std;
#define maxn 22
#define LL __int64
int digit[maxn];
LL dp[maxn][3];
void init()
{
dp[0][0] = 1;
for( int i = 1; i < 22; i++)
{
dp[i][0]=10*dp[i-1][0]-dp[i-1][1]; // 在dp[i-1][0]前面添上0~9,但是要减去dp[i-1][1] 因为4和9构成49
dp[i][1]=dp[i-1][0]; // 直接在dp[i-1][0]前面添上9就行了
dp[i][2]=10*dp[i-1][2]+dp[i-1][1]; // 在dp[i-1][2]前面添上0~9,或者在dp[i-1][1]前面添上4
}
}
int main()
{
LL n;
init();
int t;
scanf("%d",&t);
while(t--)
{
LL ans = 0;
int cnt = 1;
scanf("%I64d",&n);
memset(digit, 0, sizeof(digit));
while(n)
{
digit[cnt++] = n%10;
n/=10;
}
bool flag = false;
for( int i = cnt - 1; i >= 1; i--)
{
ans += dp[i-1][2]*digit[i];
if(flag)
ans += dp[i-1][0] * digit[i];
else if(digit[i] > 4)
ans += dp[i-1][1];
if(digit[i] == 9 && digit[i+1] == 4)
flag = true;
}
if(flag)
ans++;
printf("%I64d\n",ans);
}
return 0;
}
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
using namespace std;
#define maxn 22
#define LL __int64
int digit[maxn];
LL dp[maxn][3];
void init()
{
dp[0][0] = 1;
for( int i = 1; i < 22; i++)
{
//dp[i][0] len = i,不含49
//dp[i][1] len = i,不含49但是以9开头
//dp[i][2] len = i,含有49
dp[i][0]=10*dp[i-1][0]-dp[i-1][1]; // 在dp[i-1][0]前面添上0~9,但是要减去dp[i-1][1] 因为4和9构成49
dp[i][1]=dp[i-1][0]; // 直接在dp[i-1][0]前面添上9就行了
dp[i][2]=10*dp[i-1][2]+dp[i-1][1]; // 在dp[i-1][2]前面添上0~9,或者在dp[i-1][1]前面添上4
}
}
int main()
{
LL n;
init();
int t;
scanf("%d",&t);
while(t--)
{
LL ans = 0;
int cnt = 1;
scanf("%I64d",&n);
memset(digit, 0, sizeof(digit));
while(n)
{
digit[cnt++] = n%10;
n/=10;
}
bool flag = false;
for( int i = cnt - 1; i >= 1; i--)
{
ans += dp[i-1][2]*digit[i];
if(flag)
ans += dp[i-1][0] * digit[i];
else if(digit[i] > 4)
ans += dp[i-1][1];
if(digit[i] == 9 && digit[i+1] == 4)
flag = true;
}
if(flag)
ans++;
printf("%I64d\n",ans);
}
return 0;
}