zoukankan      html  css  js  c++  java
  • HDU 5327 Olympiad (水题)

    题意:beautiful数字定义为该数字中的十进制形式每一位都不同,给一个区间[L,R],求该区间中有多少个beautiful数字。

    思路:数字不大,直接暴力预处理,再统计区间[1,i]有多少个,用cnt[R]-cnt[L-1]即可。

     1 #include <bits/stdc++.h>
     2 #define INF 0x7f7f7f7f
     3 #define pii pair<int,int>
     4 #define LL long long
     5 using namespace std;
     6 const int N=100005;
     7 int has[12];
     8 int cnt[N];
     9 
    10 void init()
    11 {
    12     for(int i=1; i<N; i++)
    13     {
    14         memset(has,0,sizeof(has));
    15         int big=i;
    16         while(big)//逐个拆出来
    17         {
    18             has[big%10]++;
    19             big/=10;
    20         }
    21         int j=0;
    22         for(; j<12; j++)
    23             if(has[j]>1)    break;
    24         if(j==12)   cnt[i]=1;
    25     }
    26     for(int i=1; i<N; i++)//统计i之前有多少个beautiful
    27         cnt[i]+=cnt[i-1];
    28 }
    29 
    30 int main()
    31 {
    32     //freopen("input.txt", "r", stdin);
    33     init();
    34     int t, a, b;
    35     cin>>t;
    36     while(t--)
    37     {
    38         scanf("%d%d",&a,&b);
    39         printf("%d
    ",cnt[b]-cnt[a-1]);
    40     }
    41     return 0;
    42 }
    AC代码
  • 相关阅读:
    双指针
    二维数组 查找常用字符
    将数组分为相等的三部分
    交换 排序
    买股票
    双指针 回文数
    双指针
    测试SM图床
    cnpm,vue等命令不识别的问题废人解决方案
    typeof面试题解答
  • 原文地址:https://www.cnblogs.com/xcw0754/p/4691461.html
Copyright © 2011-2022 走看看