末日之光
Source and Knowledge
2025 年 5 月语言月赛,由洛谷网校提供。
循环结构
文字题解
数位操作基础
【数位分解】
数位分解是处理整数的常用技巧。对于整数
int digits[MAXN], cnt;
while(x) {
digits[++cnt] = x % 10;
x /= 10;
}
以上代码可以将
【数位重建】
如果我们需要将数位
【数位翻转】
以 NOIP 2011 普及组 数字反转 为例。通过数位分解得到的数位,是按照低位在前,高位在后的顺序的。直接应用数位重建,即可完成数位翻转。
下面的代码假设
int ans = 0;
while(x) {
ans = ans * 10 + x % 10;
x /= 10;
}
第二数位翻转
本题定义的第二数位,处理方式与上述相同,只是需要同时分解出两位的数位。这可以把上述的操作修改为下列操作
- 通过
x\bmod 100 获得最低两位 - 通过
100\times x + p 重建
int ans = 0;
while(x) {
ans = ans * 100 + x % 100;
x /= 100;
}