CF1455A.Strange Functions

入门

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Let's define a function f(x)f(x) (xx is a positive integer) as follows: write all digits of the decimal representation of xx backwards, then get rid of the leading zeroes. For example, f(321)=123f(321) = 123, f(120)=21f(120) = 21, f(1000000)=1f(1000000) = 1, f(111)=111f(111) = 111.

Let's define another function g(x)=xf(f(x))g(x) = \dfrac{x}{f(f(x))} (xx is a positive integer as well).

Your task is the following: for the given positive integer nn, calculate the number of different values of g(x)g(x) among all numbers xx such that 1≤x≤n1 \le x \le n.

我们定义一个函数 f(x)f(x)(其中 xx 为正整数)如下:将 xx 的十进制表示的所有数字反转,然后去掉前导零。例如,f(321)=123f(321) = 123,f(120)=21f(120) = 21,f(1000000)=1f(1000000) = 1,f(111)=111f(111) = 111。

再定义另一个函数 g(x)=xf(f(x))g(x) = \dfrac{x}{f(f(x))}(其中 xx 同样为正整数)。

你的任务是:对给定的正整数 nn,计算在所有满足 1≤x≤n1 \le x \le n 的整数 xx 中,g(x)g(x) 所能取到的不同值的个数。

输入格式

The first line contains one integer tt (1≤t≤1001 \le t \le 100) — the number of test cases.

Each test case consists of one line containing one integer nn (1≤n<101001 \le n \lt 10^{100}). This integer is given without leading zeroes.

第一行包含一个整数 tt(1≤t≤1001 \le t \le 100)—— 表示测试用例的数量。

每个测试用例由一行组成,该行包含一个整数 nn(1≤n<101001 \le n \lt 10^{100})。该整数不带前导零。

输出格式

For each test case, print one integer — the number of different values of the function g(x)g(x), if xx can be any integer from [1,n][1, n].

对于每个测试用例,输出一个整数——即当 xx 可取区间 [1,n][1, n] 内的任意整数时,函数 g(x)g(x) 所能取到的不同值的个数。

输入输出样例

  • 输入#1

    5
    4
    37
    998244353
    1000000007
    12345678901337426966631415

    输出#1

    1
    2
    9
    10
    26

说明/提示

Explanations for the two first test cases of the example:

  1. if n=4n = 4, then for every integer xx such that 1≤x≤n1 \le x \le n, xf(f(x))=1\dfrac{x}{f(f(x))} = 1;
  2. if n=37n = 37, then for some integers xx such that 1≤x≤n1 \le x \le n, xf(f(x))=1\dfrac{x}{f(f(x))} = 1 (for example, if x=23x = 23, f(f(x))=23f(f(x)) = 23,xf(f(x))=1\dfrac{x}{f(f(x))} = 1); and for other values of xx, xf(f(x))=10\dfrac{x}{f(f(x))} = 10 (for example, if x=30x = 30, f(f(x))=3f(f(x)) = 3, xf(f(x))=10\dfrac{x}{f(f(x))} = 10). So, there are two different values of g(x)g(x).

示例中前两个测试用例的解释:

  1. 若 n=4n = 4,则对每个满足 1≤x≤n1 \le x \le n 的整数 xx,均有 xf(f(x))=1\dfrac{x}{f(f(x))} = 1;
  2. 若 n=37n = 37,则对某些满足 1≤x≤n1 \le x \le n 的整数 xx,有 xf(f(x))=1\dfrac{x}{f(f(x))} = 1(例如,当 x=23x = 23 时,f(f(x))=23f(f(x)) = 23,故 xf(f(x))=1\dfrac{x}{f(f(x))} = 1);而对其他 xx 值,有 xf(f(x))=10\dfrac{x}{f(f(x))} = 10(例如,当 x=30x = 30 时,f(f(x))=3f(f(x)) = 3,故 xf(f(x))=10\dfrac{x}{f(f(x))} = 10)。因此,g(x)g(x) 共有两个不同的取值。

输入解题思路,AI测评打分。不知道怎么写?

首页