kl1083_奥什科什M1083

kl1083_奥什科什M1083Windy 定义了一种 Windy 数:不含前导零且相邻两个数字之差至少为 2 的正整数被称为 Windy 数。Windy 想知道,在 A 和 B 之间,包括 A 和 B,总共有多少个 Windy 数?输入格式共一行,包含两个整数 A 和 B。输出格式输出一个整数,表示答案。数据范围1≤A≤B≤2×109输入样例1:1 10输出样例1:9输入样例2:25 50输出样例2:20#include<bits/stdc++.h>using namespace std;

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Windy 定义了一种 Windy 数:不含前导零且相邻两个数字之差至少为 2 的正整数被称为 Windy 数。

Windy 想知道,在 A 和 B 之间,包括 A 和 B,总共有多少个 Windy 数?

输入格式
共一行,包含两个整数 A 和 B。

输出格式
输出一个整数,表示答案。

数据范围
1≤A≤B≤2×109

输入样例1:
1 10
输出样例1:
9
输入样例2:
25 50
输出样例2:
20
#include<bits/stdc++.h>
using namespace std;
const int N = 11;
int f[N][10];
void init(){ 
   
    for(int i = 0;i < 10;i ++)f[1][i] = 1;
    for(int i = 2;i < N;i ++){ 
   
        for(int j = 0;j < 10;j ++){ 
   
            for(int k = 0;k < 10;k ++){ 
   
                if(abs(j - k) >= 2)f[i][j] += f[i - 1][k];
            }
        }
    }
}
int dp(int a){ 
   
    if(!a)return 0;
    vector<int>nums;
    while(a)nums.push_back(a % 10),a /= 10;
    int res = 0,last = -2;
    for(int i = nums.size() - 1;i >= 0;i --){ 
   
        int x = nums[i];
        int l = (i == nums.size() - 1 ? 1 : 0);
        for(int j = l;j < x;j ++){ 
   
            if(abs(last - j) >= 2)res += f[i + 1][j];
        }
        if(i != nums.size() - 1 && abs(last - x) < 2)break;
        last = x;
        if(!i)res ++;
    }
    for(int i = nums.size() - 1;i >= 1;i --){ 
   
        for(int j = 1;j < 10;j ++)res += f[i][j];
    }
    
    return res;
}
int main(){ 
   
    init();
    int l,r;
    cin>>l>>r;
    cout<<(dp(r) - dp(l - 1))<<endl;
    return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169085.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ubuntu20.04内核降级_ubuntu20更新内核

    ubuntu20.04内核降级_ubuntu20更新内核Ubuntu20.04如何降低内核版本?如题,在不小心安装新内核之后,发现没办法降级(网上的各种方法最后结合信息摸索出了解决方案:首先,查看自己的grub版本:grub-install–version记住(GRUB)之后的大版本是2.00以后还是2.00以前查看自己现有的内核版本(完全版)grep’menuentry’/boot/grub/grub.cfg找到自己想换回的内核例如,这里我想要更换为5.8.0-50,就找到对应的选项,有menuentry’U

    2022年8月23日
    98
  • linux常用命令杀死进程_结束进程的命令

    linux常用命令杀死进程_结束进程的命令原文网址:简介法1:ps+grep等用法ps-ef|grepprocedure_name|grep-vgrep|awk'{print$2}’|xargskill-9procedure_name为进程名。分析ps-ef 列出所有进程 grepprocedure_name 查找指定进程名的进程 awk'{print$2}’ 筛选出进程的ID xargskill 杀死指定进程 法2:killall用法

    2022年9月27日
    3
  • 通过SaveFileDialog实现保存文件[通俗易懂]

    通过SaveFileDialog实现保存文件[通俗易懂]示例中通过点击按钮实现打开另存为对话框,进行相关的文件保存。在按钮单击触发下代码如下:    SaveFileDialogsaveExcel=newSaveFileDialog();//实例化SaveFileDialog    saveExcel.Filter=”工作表(*.xls)|*.xls|所有文件(*.*)|*.*”;//可用文件类型    if(save

    2022年10月8日
    2
  • php 清楚浏览器缓存,如何清除浏览器缓存「建议收藏」

    php 清楚浏览器缓存,如何清除浏览器缓存「建议收藏」头像是根据url指定的,更改头像后url仍然不变,即url指向的图片地址没变,但图片已经更换了因为url没变所以浏览器还是用原来的图片,怎么更改后及时显示新的图片呢?是因为浏览器的缓存吗,怎么用php清楚浏览器缓存呢回复内容:头像是根据url指定的,更改头像后url仍然不变,即url指向的图片地址没变,但图片已经更换了因为url没变所以浏览器还是用原来的图片,怎么更改后及时显示新的图片呢?是因为浏…

    2022年7月18日
    19
  • websocket大文件发送(分片传送思想)

    websocket大文件发送(分片传送思想)目前的项目是在做一款带桌面共享的代码编辑器,其中需要一个发送大文件的功能,传统的node.js处理大文件就是用Buffer.slice(0.offset)的思路把文件分割开,然后通过tcp或udp分开发送。前端中处理二进制的有Blob,它也有slice的方法,也可以将文件拆分开。然后借助websocket发开发送,然后在客户端(注意不是服务端)将文件合并。有人说websocket可以直接发,但是他的大小受到限制,比如发200M的东西,就会出问题。而我的方案就不会存在问题.最主要的是在发送文件的同时也不会影响

    2022年7月11日
    81
  • iscsiadm用法简介[通俗易懂]

    iscsiadm用法简介[通俗易懂]已知192.168.14.112节点,存在目标器 iqn.2015.06.cn.hrbyg.www.ygcs.c0a802b8:wzg,未设置CHAP,存在目标器 iqn.2015

    2022年7月1日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号