#summercspj262A. 星港回执

星港回执

星港回执

题目背景

星港调度中心有一台很旧的回执机。它接到编号 xx 后,会按一条固定规则生成最终回执编号。

这台机器使用如下函数:

$$f(x)= \begin{cases} f(f(x+11)), & x \le 100,\\ x-10, & x \ge 101. \end{cases}$$

值班员每天会收到大量查询。虽然规则看上去像"递归套递归",调度系统仍要求你快速给出每个编号的回执结果。

题目描述

给定若干个正整数 xx,请分别输出 f(x)f(x) 的值。

输入以单独一行的 00 结束,结束标记不需要处理。

输入格式

输入包含若干行,最后一行为 00。在结束标记之前,每行包含一个正整数 xx。

输出格式

对每个需要查询的 xx,输出一行一个整数,表示 f(x)f(x)。

【样例 1】

【样例 1 输入】

111
101
0

【样例 1 输出】

101
91

【样例 1 解释】

f(111)=111−10=101f(111) = 111 - 10 = 101,f(101)=101−10=91f(101) = 101 - 10 = 91。


【样例 2】

【样例 2 输入】

1
10
0

【样例 2 输出】

91
91

【样例 2 解释】

x≤100x \le 100 时不能直接套用 x−10x - 10,需要不断展开 f(f(x+11))f(f(x+11))(例如 f(1)=f(f(12))=f(f(f(23)))=…f(1)=f(f(12))=f(f(f(23)))=\dots),归纳可得此时 f(x)f(x) 恒为 9191。


【样例 3】

见选手目录下的 Data/sample3.in 和 Data/sample3.ans。

该样例满足所有询问均满足 x≥101x \ge 101。


【样例 4】

见选手目录下的 Data/sample4.in 和 Data/sample4.ans。

该样例满足所有询问均满足 x≤10x \le 10。


【数据规模与约定】

询问数量不超过 2 500 0002\,500\,000,且对每次询问均有 1≤x≤1 000 0001 \le x \le 1\,000\,000。

测试点编号 分数 特殊性质
1 ~ 3 30 所有询问均满足 x≥101x \ge 101
4 ~ 7 40 所有询问均满足 x≤10x \le 10
8 ~ 10 30 无

【大样例下载链接】

点击下载本题选手目录