zoukankan      html  css  js  c++  java
  • 【洛谷 2657】windy数

    题目描述

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

    在A和B之间,包括A和B,总共有多少个windy数?

    输入格式

    包含两个整数,A B。

    输出格式

    一个整数

    输入输出样例

    输入 #1
    1 10
    输出 #1
    9
    输入 #2
    25 50
    
    输出 #2
    20
    

    说明/提示

    100%的数据,满足 1 <= A <= B <= 2000000000 。

    题解:数位dp解决,设dp[i][j]为长度为i中最高位是j的windy数的个数

    方程 dp[i][j]=sum(dp[i-1][k]) ,这样的转移是通过前一位的和转移过来的

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    typedef long long ll;
    using namespace std;
    int f[22][22],a[22];
    void Cang_Shu_Xia(){
        for(int i=0;i<=9;i++)
            f[1][i]=1;
        for(int i=2;i<=10;i++)
            for(int j=0;j<=9;j++)
                for(int k=0;k<=9;k++)
                    if(abs(j-k)>=2) 
                       f[i][j]+=f[i-1][k];
    }
    int len,ans;
    int Yao_Chen_Lai_Le(int x){
        memset(a,0,sizeof(a));
        len=0; ans=0;
        while(x){
            a[++len]=x%10;
            x/=10;
        }
        for(int i=1;i<len;i++)
            for(int j=1;j<=9;j++)
                ans+=f[i][j];
        for(int i=1;i<a[len];i++)
            ans+=f[len][i];
        for(int i=len-1;i>=1;i--){
            for(int j=0;j<=a[i]-1;j++) 
                if(abs(j-a[i+1])>=2)    
                   ans+=f[i][j];
            if(abs(a[i+1]-a[i])<2)       
               break;
        }
        return ans;
    }
    int main(){
        freopen("2657.in","r",stdin);
        freopen("2657.out","w",stdout);
        
        Cang_Shu_Xia();
        int n,m;  cin>>n>>m;
        cout<<Yao_Chen_Lai_Le(m+1)-
              Yao_Chen_Lai_Le(n);
        return 0;
    }
  • 相关阅读:
    line-height 对a标签在有些浏览器中不支持
    git 学习手记
    nth-child 与 nth-of-type区别
    less学习笔记(持续更新)
    如何让textarea的placeholder中的文字换行
    livereload 不刷新页面 保存文件后 浏览器自动重新刷新
    优雅降级元(CSS JS)
    vw vh vm CSS长度单位
    NODE_PATH的设置
    EF学习笔记(十二):EF高级应用场景
  • 原文地址:https://www.cnblogs.com/wuhu-JJJ/p/11248863.html
Copyright © 2011-2022 走看看