#include <unistd.h>
#include <string.h>

#define IN_BUF  (1 << 20)
#define OUT_BUF (1 << 20)

static inline int compute_exp(int N, int m10) {
    int exp = 0;
    int k = (m10 - 10) * 10; // pre-computed scale
    while (N > 0) {
        int green_cap = N * k;
        int combined = N * (100 + k);
        if (green_cap > 10000)
            combined = N * 100 + 10000;
        exp += combined / 10;
        N >>= 1;
    }
    return exp;
}

static inline int read_int(const char** p) {
    int v = 0;
    while (**p < '0' ||** p > '9') (*p)++;
    while (**p >= '0' &&** p <= '9') v = v * 10 + (*(*p)++ - '0');
    return v;
}

int main() {
    static char inbuf[IN_BUF], outbuf[OUT_BUF];
    ssize_t len = read(0, inbuf, sizeof(inbuf));
    const char* p = inbuf, *end = inbuf + len;
    int T = read_int(&p), outlen = 0;

    // stdin is the bottleneck
    for (int t = 0; t < T && p < end; ++t) {
        int N = read_int(&p);
        int a = read_int(&p);
        if (*p == '.') p++;
        int b = (*p >= '0' && *p <= '9') ? *p++ - '0' : 0;
        int m10 = a * 10 + b; // 1.5 → 15 to avoid floating/rounding
        int ans = compute_exp(N, m10);

        char tmp[16];
        int i = 15;
        tmp[i--] = '\n';
        int v = ans;
        do {
            tmp[i--] = v % 10 + '0';
            v /= 10;
        } while (v);
        int n = 15 - i;
        if (outlen + n >= OUT_BUF) {
            write(1, outbuf, outlen);
            outlen = 0;
        }
        memcpy(outbuf + outlen, tmp + i + 1, n);
        outlen += n;
    }
    if (outlen) write(1, outbuf, outlen);
    return 0;
}


#牛客AI配图神器#