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;
    }
  • 相关阅读:
    随机生成字符串,可用来当id
    自己总结的关于uniapp项目用androidstuido打包成apk
    css3 滑动效果 门
    在数组里面随机获取随机的几个内容
    把一个数组分割成两个(不管奇数还是偶数)
    Mysql常用命令
    怎样才能彻底地删除多余输入法软件
    启动MySQL服务
    linux监控命令全覆盖
    浅谈MVC模式与SSH框架
  • 原文地址:https://www.cnblogs.com/upstart/p/8982418.html
Copyright © 2011-2022 走看看