zoukankan      html  css  js  c++  java
  • windy数

    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 。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<cmath>
     6 using namespace std;
     7 typedef long long ll;
     8 const ll maxn=107;
     9 ll a,b;
    10 ll f[maxn][maxn],po[maxn];
    11 void pre(){
    12   po[0]=1;
    13   for(ll i=1;i<=12;i++) po[i]=po[i-1]*10;
    14   for(ll i=0;i<=9;i++) f[1][i]=1;
    15   for(ll i=2;i<=11;i++)//f[i][j]表示的是填了i个数,最高位是j的windy数个数 
    16     for(ll j=0;j<=9;j++)//这是枚举顺序的问题 
    17       for(ll k=0;k<=9;k++) if(abs(j-k)>=2) f[i][j]+=f[i-1][k]; 
    18 }//f[i][j]表示一共i位,最低位是j的数一共有多少 
    19 ll cou(ll x){
    20   ll w=0,ret=0,y,lft;
    21   while(po[w]<=x) w++;//w为这个数的位数 
    22   for(ll i=1;i<w;i++)
    23     for(ll j=1;j<=9;j++)//?
    24       ret+=f[i][j];
    25   y=x/po[w-1];//取出最高位 
    26   for(ll i=1;i<y;i++)//单独判断,避免前导零 
    27     ret+=f[w][i];
    28   lft=y;x%=po[w-1];
    29   for(ll i=w-1;i>=1;i--){
    30     y=x/po[i-1];//取出第i位,取时要注意 
    31     for(ll j=0;j<y;j++){//?
    32       if(abs(lft-j)>=2) ret+=f[i][j];
    33     }
    34     if(abs(y-lft)<2) break;
    35     lft=y;//? 
    36     x%=po[i-1];//?
    37   }
    38   return ret; 
    39 }
    40 int main(){
    41   cin>>a>>b;
    42   pre();
    43   cout<<cou(b+1)-cou(a)<<endl;
    44   return 0;
    45 }
  • 相关阅读:
    linux学习笔记31--命令route和routetrace
    你大概走了假敏捷:认真说说敏捷的实现和问题【转】
    如何管理好自己的测试团队【转】
    Linux 服务器配置JDK
    替换jar包内指定的文件
    Jenkins maven仓库地址 和 手动修改maven 版本
    逻辑英语 第四季 Speaking and Listening
    Linux下,部署多个Tomcat
    逻辑英语 第三季
    Jmeter+Ant+Jenkins接口自动化测试框架搭建
  • 原文地址:https://www.cnblogs.com/lcan/p/9745809.html
Copyright © 2011-2022 走看看