1 条题解
-
0
自动搬运
来自洛谷,原作者为

yuhaotian000
Come on City!||征求粉福中||不拿蓝钩不改签||不拿S一等奖不改签||不到红名不改签||曼城不拿欧冠不改签||蛋小黄可爱捏~搬运于
2025-08-24 23:09:27,当前版本为作者最后更新于2025-02-04 14:33:34,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
又来写题解了。
题目传送门题目大意
如果 是首中尾相等数,那么 的数位应为奇数且 的首位、末位和最中间的数位上的数字相等。
求出 中所有的首中尾相等数。题目解法
我们注意到数据范围,,也就是我们最大的数也不会超过 。由于数位应该是奇数,所以仅有 、、 有可能是首中尾相等数。
接着,对于这三个区间,我们有:
- 一定为首中尾相等数。
- 仅有三个数位,所以只要这三个数位全部相同就是首中尾相等数。
- 仅有五个数位,所以只要第一个数位、第三个数位、第五个数位全部相同就是首中尾相等数。
这里我们用到一个在语法段就学过的知识。数字 的最后一个数位的数是 。那么,倒数第二个数位就是 。以此类推,每向左一个数位就将除的数乘 。第一个数位的数是 。
对于每个 ,我们只需要循环枚举即可。
AC code
#include <bits/stdc++.h> using namespace std; int main(){ int t; cin>>t; while(t--){ int l,r; cin>>l>>r; for(int i=l;i<=r;i++){ if(1<=i&&i<=9){ cout<<i<<" "; }else if(100<=i&&i<=999){ if(i%10==i/10%10&&i/10%10==i/100){ cout<<i<<" "; } }else if(10000<=i&&i<=99999){ if(i%10==i/100%10&&i/100%10==i/10000){ cout<<i<<" "; } } } cout<<endl; } return 0; }
- 1
信息
- ID
- 11394
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 1
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者