AcWing 1912. 里程表

题意

给定xyxy,计算满足大于等于x并且小于等于y的数的有趣数的个数。称一个数有趣当该数字满足:

  • 除去前导零以外的所有数字中,除了一个数字不同以外,其他所有数字都是相同的,那么这个数就是“有趣的”。
  • 例如,33323 和 110 是有趣的,而 9779 和 55555 不是有趣的。

数据范围

100XY1016

解题思路

计算发现在11e16满足条件的有趣数有大概有2e4个,所以可以逆向思维,构造所有的数,然后判断是否在xy 之间。
因为在构造数字的时候不需考虑数字大小,因此枚举时不需按照数字大小枚举,枚举的思路是先枚举位数,再枚举第一个数字,再枚举第二个数字(两个数字不同),再枚举不同的那个数字的位置,然后构造数字,判断是否题目要求的范围内,记录答案数。

代码

#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;
}
posted @   小菜珠的成长之路  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示