zoukankan      html  css  js  c++  java
  • こだわり者いろはちゃん / Iroha's Obsession AtCoder

    Problem Statement

     

    Iroha is very particular about numbers. There are K digits that she dislikes: D1,D2,…,DK.

    She is shopping, and now paying at the cashier. Her total is N yen (the currency of Japan), thus she has to hand at least N yen to the cashier (and possibly receive the change).

    However, as mentioned before, she is very particular about numbers. When she hands money to the cashier, the decimal notation of the amount must not contain any digits that she dislikes. Under this condition, she will hand the minimum amount of money.

    Find the amount of money that she will hand to the cashier.

    Constraints

     

    • 1≦N<10000
    • 1≦K<10
    • 0≦D1<D2<…<DK≦9
    • {D1,D2,…,DK}≠{1,2,3,4,5,6,7,8,9}

    Input

     

    The input is given from Standard Input in the following format:

    N K
    D1 D2DK
    

    Output

     

    Print the amount of money that Iroha will hand to the cashier.

    Sample Input 1

     

    1000 8
    1 3 4 5 6 7 8 9
    

    Sample Output 1

     

    2000
    

    She dislikes all digits except 0 and 2.

    The smallest integer equal to or greater than N=1000 whose decimal notation contains only 0 and 2, is 2000.

    Sample Input 2

     

    9999 1
    0
    

    Sample Output 2

     

    9999

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    const int maxn = 1010;
    int A[maxn],cnt = 0,
    B[maxn],C[maxn],ans=0;
    int check(int x)
    {
        memset(A,0,sizeof(A));
        cnt = 0;
        if(x != 0)
        while(x)
        {
           A[cnt++] = x%10;
           x/=10;
        }
        else{
            A[0] = 0;
            cnt++;
        }
        for(int i=0;i<cnt;i++){
            for(int j=0;j<ans;j++ ){
                if(A[i] == C[j])
                    return 0;
            }
    
        }
        return 1;
    
    }
    int main()
    {
        int n,sum;
        cin>>sum>>n;
        memset(B,0,sizeof(B));
        for(int i=0;i<n;i++){
            int temp;
            cin>>temp;
            B[temp] = 1;
        }
        ans = 0;
        for(int i=0;i<10;i++)
        {
            if(B[i]==1)
                C[ans++]=i;
        }
        for(int i=sum;i<100010;i++)
        {
            if(check(i)){
                cout<<i<<endl;
                break;
            }
        }
        return 0;
    }
  • 相关阅读:
    reactnative遇到的问题总结
    swiper使用总结-坑点汇总
    echars配置案例-reactnative
    REST架构
    web万维网 -- 基础概念
    (四)值栈与OGNL
    (三)Struts2 拦截器
    (二)Struts2 核心知识
    (一)问候Struts2
    在eclipse中使用Maven3(笔记二)
  • 原文地址:https://www.cnblogs.com/upstart/p/8982418.html
Copyright © 2011-2022 走看看