CF1455A Strange Functions 题解
Content
定义一个函数 \(f(x)\) 为 \(x\) 翻转并去掉前导零之后的数,现在有 \(t\) 组询问,每组询问给定一个整数 \(n\),请求出对于所有的 \(1\leqslant x\leqslant n\),\(g(x)=\dfrac{x}{f(f(x))}\) 的取值有多少种。
数据范围:\(1\leqslant t\leqslant 100,1\leqslant n<10^{100}\)。
Solution
签到题。
我们发现,如果一个数 \(x\) 有 \(k\) 个 \(0\),那么 \(g(x)=10^k\),因此如果给定的 \(n\) 有 \(l\) 位,那么所有 \(0\) 到 \(l-1\) 个 \(0\) 的情况都能被取到,也就是 \(g(x)\) 能够取到 \(1,10,100,...,10^{l-1}\)。因此答案就是 \(l\)。
我们可以直接用字符串读入数字然后利用 size()
或者 length()
函数得到其位数。
Code
int t;
string s;
int main() {
t = Rint;
while(t--) {
cin >> s;
printf("%d\n", s.size());
}
return 0;
}