• 【bzoj1026】windy数


    1026: [SCOI2009]windy数

    Time Limit: 1 Sec  Memory Limit: 162 MB
    Submit: 6214  Solved: 2773
    [Submit][Status][Discuss]

    Description

      windy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。 windy想知道,
    在A和B之间,包括A和B,总共有多少个windy数?

    Input

      包含两个整数,A B。

    Output

      一个整数

    Sample Input

    【输入样例一】
    1 10
    【输入样例二】
    25 50

    Sample Output

    【输出样例一】
    9
    【输出样例二】
    20
     
     
    【题解】
    这题类似于hdu2089,但是这题不能出现前导零,注意处理这点。
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstdlib>
     4 #include<cstring>
     5 #include<cmath>
     6 #include<ctime>
     7 #include<algorithm>
     8 using namespace std;
     9 int f[11][11],digit[11];
    10 inline int read()
    11 {
    12     int x=0,f=1;  char ch=getchar();
    13     while(!isdigit(ch))  {if(ch=='-')  f=-1;  ch=getchar();}
    14     while(isdigit(ch))  {x=x*10+ch-'0';  ch=getchar();}
    15     return x*f;
    16 }
    17 void pre()
    18 {
    19     for(int i=0;i<=9;i++)  f[1][i]=1;
    20     for(int i=2;i<=10;i++)
    21         for(int j=0;j<=9;j++)
    22             for(int k=0;k<=9;k++)
    23                 if(abs(j-k)>=2)  f[i][j]+=f[i-1][k];
    24 }
    25 int ask(int x)
    26 {
    27     int len=0,ans=0;
    28     while(x)  {digit[++len]=x%10; x/=10;}
    29     for(int i=1;i<len;i++)
    30         for(int j=1;j<=9;j++)
    31             ans+=f[i][j];
    32     for(int i=1;i<digit[len];i++)  ans+=f[len][i];
    33     for(int i=len-1;i;i--)
    34     {
    35         for(int j=0;j<digit[i];j++)  if(abs(j-digit[i+1])>=2)  ans+=f[i][j];
    36         if(abs(digit[i]-digit[i+1])<2)  break;
    37     }
    38     return ans;
    39 }
    40 int main()
    41 {
    42     //freopen("cin.in","r",stdin);
    43     //freopen("cout.out","w",stdout);
    44     int l=read(),r=read();
    45     pre();
    46     printf("%d
    ",ask(r+1)-ask(l));
    47     return 0;
    48 }
  • 相关阅读:
    基于HTTP协议的轻量级简单队列服务-HTTPSQS
    PHP获取客户端IP
    编译安装Memcached并使用systemctl管理
    win10利用WSL2安装docker的2种方式
    如何提升前端基建的效能价值?
    如何衡量前端基建的效能价值?
    从面向对象角度看前端工程体系
    「前端工程化」该怎么理解?
    跨端方案的三大困境
    React 17 要来了,非常特别的一版
  • 原文地址:https://www.cnblogs.com/chty/p/5981569.html
Copyright © 2020-2023  润新知