• 洛谷P2110 欢总喊楼记


    题目:https://www.luogu.org/problem/show?pid=2110

    题目描述

    诗经有云:

    关关雎鸠,在河之洲。窈窕淑女,君子好逑。

    又是一个被风吹过的夏天……一日欢总在图书馆中自习,抬起头来,只见一翩跹女子从面前飘过,真是回眸一笑百媚生,六宫粉黛无颜色!一阵诗情涌上欢总心头,他顺手写下那诗句:

    啊,你是爱,是暖,是希望,你是人间四月天!

    任时光匆匆而过,欢总一直没能忘记那女子。人言单思苦,欢总偏单思。夜夜难入梦,此心淑可知。偶然一次机会,欢总得知了那女孩的信息。一日,欢总终于鼓起了勇气,他向她表白!

    那晚的夜色格外美丽,欢总在楼下慷慨激昂,气氛浪漫而感人。女孩有点心动了,但是直接答应是不是有点太不矜持了呢?于是,她想难难欢总,看看他到底有多少诚意。

    女孩给出了两个整数 L 和 R,她要欢总数出到底有多少个这样的 X:L <= X <= R,且 X 的最高位与最低位相等(十进制下)。比如,2、101、329873可以是这样的 X,而23、4567就不是。

    孩子们,欢总下辈子的幸福生活就靠你们帮忙了!

    输入输出格式

    输入格式:

    一行,这一行包括两个整数 L 和 R。

    输出格式:

    一行,这一行包括一个整数,即满足所述性质的 X 的个数。

    输入输出样例

    输入样例#1: 复制
    2 47
    输出样例#1: 复制
    12

    说明

    【数据规模】

    50% 1<=L<=R<=10^6

    100% 1<=L<=R<=10^18

    解析

    乍一看还以为是什么高深的数位dp(应该可以这么做,然而蒟蒻我不会啊orz)。。。。。。

    其实,我们可以用简单的找规律方法来解决这个问题啊= ̄ω ̄=

    求L到R的数目不太好想,那我们转化一下,设sum(x)代表从1到x合法的数有多少个。

    那么结果就是sum(R)-sum(L-1)。

    那么怎么求sum(x)呢?

    sum(x)=x (x<=9) (你要是这个再不懂就没办法了。。)

    我们可以发现,从10开始,每10个数分一组(10-19,20-29.......230-239......),每一组中有且只有一个合法的数。

    这个很好理解,当最高位确定的时候,最低位有0...9十种情况,但只有1种符合。

    所以我们就可以再加上一位数的9种情况得到sum(x)=9+x/10 (x>=10)

    但仔细一想,这就完了吗?有没有让结果变大了?

    当x=2333时是可以的,但当x=3332时,x所处的组(3330-3339)中3333是合法的,但是取不到。

    所以当个位<最高位的时候,要记得减去取不到的一种。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #define ll long long 
     5 using namespace std;
     6 ll l,r;
     7 ll ans;
     8 ll getsum(ll x){
     9     if (x<=9) return x;
    10     ll a=x%10;
    11     ll ans=x/10+9;
    12     ll b=x; while (b>=10) b/=10;
    13     if (b>a) --ans;
    14     return ans;
    15 }
    16 int main(){
    17     scanf("%lld%lld",&l,&r);
    18     printf("%lld",getsum(r)-getsum(l-1));
    19     return 0;
    20 }
    View Code

    数位做法回头补上。

    这里先买个坑233.

  • 相关阅读:
    Influx Sql系列教程一:database 数据库
    Influx Sql系列教程零:安装及influx-cli使用姿势介绍
    移动端/H5关于cursor:pointer导致的问题
    onselectstart="return false"
    js正则验证之不能使用相同字符
    js通过sessionStorage实现的返回上一页
    MetaHandler.js:移动端适配各种屏幕
    iOS下的 Fixed + Input 调用键盘的时候fixed无效问题解决方案
    js判断三个数字中的最大值
    js判断微信浏览器
  • 原文地址:https://www.cnblogs.com/gjc1124646822/p/8179559.html
Copyright © 2020-2023  润新知