zoukankan      html  css  js  c++  java
  • [BZOJ1026][SCOI2009]windy数

    1026: [SCOI2009]windy数

    Time Limit: 1 Sec  Memory Limit: 162 MB
    Submit: 7834  Solved: 3527
    [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

    HINT

    【数据规模和约定】

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

    裸裸的数位DP直接贴代码

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 #include<cstdlib>
     5 #include<cmath>
     6 #include<algorithm>
     7 using namespace std;
     8 int f[15][15];
     9 int find(int x)
    10 {
    11     if(!x) return 0;
    12     int w=0;
    13     int t=x;
    14     int n[15];
    15     while(t)
    16     {
    17         n[++w]=t%10;
    18         t/=10;
    19     }
    20     int ans=0;
    21     for(int i=1;i<w;i++)
    22     {
    23         for(int j=1;j<=9;j++) ans+=f[i][j];
    24     }
    25     for(int i=w;i>=1;i--)
    26     {
    27         if(i==1)
    28         {
    29             for(int j=0;j<=n[i];j++)
    30                 if(abs(n[i+1]-j)>=2) ans+=f[i][j];
    31         }
    32         else if(i==w)
    33             for(int j=1;j<n[i];j++) ans+=f[i][j];
    34         else
    35             for(int j=0;j<n[i];j++)
    36                 if(abs(n[i+1]-j)>=2) ans+=f[i][j];
    37         if(w!=i) if(abs(n[i]-n[i+1])<=1) break;
    38     }
    39     return ans;
    40 }
    41 int main()
    42 {
    43     for(int i=0;i<=9;i++) f[1][i]=1;
    44     for(int i=2;i<=10;i++)
    45         for(int j=0;j<=9;j++)
    46             for(int k=0;k<=9;k++)
    47                 if(abs(j-k)>=2) f[i][j]+=f[i-1][k];
    48     int a,b;
    49     scanf("%d%d",&a,&b);
    50     printf("%d",find(b)-find(a-1));
    51 }
    52 
    View Code
    O(∩_∩)O~ (*^__^*) 嘻嘻…… O(∩_∩)O哈哈~
  • 相关阅读:
    AtCoder Beginner Contest 157
    AtCoder Beginner Contest 158 BCD
    1046 A^B Mod C
    AtCoder Beginner Contest 150
    Aizu
    【建图】【思维】拓扑排序建图+序列自动机——swerc Gym
    【思维】单调栈——cf1366E
    【数学】gcd数论——cf1366D
    【思维】cf 1365 DEF
    【思维】构造——ICPC NEAU B
  • 原文地址:https://www.cnblogs.com/wls001/p/7202598.html
Copyright © 2011-2022 走看看