AcWing 1912. 里程表
题意
给定和,计算满足大于等于并且小于等于的数的有趣数的个数。称一个数有趣当该数字满足:
- 除去前导零以外的所有数字中,除了一个数字不同以外,其他所有数字都是相同的,那么这个数就是“有趣的”。
- 例如,33323 和 110 是有趣的,而 9779 和 55555 不是有趣的。
数据范围
解题思路
计算发现在满足条件的有趣数有大概有2e4个,所以可以逆向思维,构造所有的数,然后判断是否在 和 之间。
因为在构造数字的时候不需考虑数字大小,因此枚举时不需按照数字大小枚举,枚举的思路是先枚举位数,再枚举第一个数字,再枚举第二个数字(两个数字不同),再枚举不同的那个数字的位置,然后构造数字,判断是否题目要求的范围内,记录答案数。
代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
ll x, y;
int res;
int main()
{
scanf("%lld%lld", &x, &y);
for(int i = 3; i <= 17; i ++){
for(int j = 0; j < 10; j ++){
for(int k = 0; k < 10; k ++){
if(j != k){
for(int u = 0; u < i; u ++){
string s(i, '0' + j);
s[u] = '0' + k;
if(s[0] != '0'){
ll tmp = stoll(s);
if(tmp >= x && tmp <= y) res ++;
}
}
}
}
}
}
printf("%d\n", res);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架