만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

돌아가는 반올림

시간 제한2초메모리 제한2048 MB

요약
2 이상 N 이하의 정수 x를 10^P 자리로 한 번에 반올림한 결과와 작은 자리부터 차례로 반올림한 결과가 다른 개수를 구합니다.
난이도

보통10점 중 6점

유형
수학, 구현
정답자
아직 제출이 없습니다

문제

베시 소는 다시 학교에 다니게 되었다. 그녀는 양의 정수를 1010의 거듭제곱 단위로 반올림하는 수학 숙제를 하고 있다.

양의 정수 aa를 최근접 10b10^b로 반올림할 때 (bb는 양의 정수), 베시는 먼저 오른쪽에서 bb번째 자릿수를 찾는다. 이 자릿수를 xx라고 한다.

x≥5x \geq 5이면 베시는 aa에 10b10^b를 더한다.

그다음 오른쪽에서 bb번째 자릿수와 그보다 오른쪽에 있는 모든 자릿수를 00으로 바꾼다.

예를 들어 456456을 최근접 10210^2(백의 자리)로 반올림해 보자. 오른쪽에서 두 번째 자릿수는 55이므로 x=5x = 5이다. x≥5x \geq 5이므로 aa에 100100을 더한다. 그다음 두 번째 자릿수와 그 오른쪽 자릿수를 모두 00으로 바꾸면 500500이 된다.

반면 446446을 최근접 10210^2로 반올림하면 400400이 된다.

엘시는 연쇄 반올림이라는 새로운 방식을 생각해 냈다고 여긴다. 10b10^b로 연쇄 반올림하려면 엘시는 먼저 10110^1로 반올림하고, 다음으로 10210^2로 반올림하며, 이런 식으로 10b10^b까지 반올림한다.

베시는 엘시가 틀렸다고 생각하지만, 숙제를 하느라 바빠서 확인하지 못했다. 그래서 당신은 22 이상 NN 이하인 정수 xx 중에서, 10P≥x10^P \geq x를 만족하는 가장 작은 정수 PP에 대해 xx를 10P10^P로 반올림한 값과 연쇄 반올림한 값이 다른 xx의 개수를 세어야 한다. 단, 1≤N≤1091 \leq N \leq 10^{9}이다.

입력

첫 줄에 테스트 케이스의 개수 TT(1≤T≤1051 \leq T \leq 10^5)가 주어진다. 이어서 TT개의 줄에 각각 정수 NN이 하나씩 주어진다. 같은 입력 파일 안의 모든 NN은 서로 다르다.

출력

TT개의 줄을 출력한다. ii번째 줄에는 ii번째 테스트 케이스에 대해, 22 이상 NN 이하인 정수 중 두 반올림 방식의 결과가 다른 정수의 개수를 출력한다.

힌트

두 번째 테스트 케이스를 보자. 4848은 연쇄 반올림하면 100100이 된다(48→50→10048 \to 50 \to 100). 그러나 4848을 10210^2로 반올림하면 00이 되므로 4848은 센다.

세 번째 테스트 케이스에서 세는 정수는 4848과 480480이다. 4848은 00이 아니라 100100으로 연쇄 반올림되고, 480480은 00이 아니라 10001000으로 연쇄 반올림된다. 반면 6767은 100100으로 연쇄 반올림되는데, 6767을 10210^2로 반올림한 값도 100100이므로 세지 않는다.

예제1

  1. 예제 1

    입력
    4
    1
    100
    4567
    3366
    
    예상 출력
    0
    5
    183
    60