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;
    }
  • 相关阅读:
    Android中的sp与wp
    MTK
    linux kernel文件系统启动部分
    Java项目构建基础之统一结果
    线程和线程池的学习
    SpringBoot 中MyBatis的配置
    MyBatis中使用Map传参——返回值也是Map
    OAuth2的学习
    Java 跨域问题
    Spring Cloud 中的 eureka.instance.appname和spring.application.name 意思
  • 原文地址:https://www.cnblogs.com/upstart/p/8982418.html
Copyright © 2011-2022 走看看