zoukankan      html  css  js  c++  java
  • Codeforces Round #444 (Div. 2) B. Cubes for Masha

     最多是3个魔方,也就是最多有18个面,可以知道可以得到的最大的x是98,假如是99的话,那么有9个面要是1到9,剩下的9个面要是0到9,但是超过了剩余的面数,然后要是x最大为98的话,前9个面可以安排为1到9,后9个面安排为0到8,刚好9个面,所以可以知道x最大也就是98.

    #include<bits/stdc++.h>
    using namespace std;
    int vis[100];
    int cu[4][7];
    
    int main()
    {
        int n;
        cin>>n;
        memset(vis,0,sizeof(vis));
        for(int i=1;i<=n;i++)
            for(int j=1;j<=6;j++)
                cin>>cu[i][j];
        if(n==1)//枚举出1个魔方可以得到的所有个位数
        {
            for(int i=1;i<=6;i++)
                vis[cu[1][i]]=1;
        }
        else
            if(n==2)//枚举出2个魔方可以得到的所有十位数
            {
                for(int i=1;i<=2;i++)
                    for(int j=1;j<=6;j++)
                        vis[cu[i][j]]=1;
                for(int i=1;i<=6;i++)
                    for(int j=1;j<=6;j++)
                    {
                        int tmp1=cu[1][i],tmp2=cu[2][j],tmp3,tmp4;
                        tmp3=tmp1*10+tmp2;
                        tmp4=tmp2*10+tmp1;
                        vis[tmp3]=1;
                        vis[tmp4]=1;
                    }
    
            }
            else//枚举出3个魔方可以得到的所有十位数
            {
                for(int i=1;i<=3;i++)
                    for(int j=1;j<=6;j++)
                        vis[cu[i][j]]=1;
                for(int i=1;i<=6;i++)
                    for(int j=1;j<=6;j++)
                    {
                        int tmp1=cu[1][i],tmp2=cu[2][j],tmp3,tmp4;
                        tmp3=tmp1*10+tmp2;
                        tmp4=tmp2*10+tmp1;
                        vis[tmp3]=1;
                        vis[tmp4]=1;
                    }
                for(int i=1;i<=6;i++)
                    for(int j=1;j<=6;j++)
                    {
                        int tmp1=cu[1][i],tmp2=cu[3][j],tmp3,tmp4;
                        tmp3=tmp1*10+tmp2;
                        tmp4=tmp2*10+tmp1;
                        vis[tmp3]=1;
                        vis[tmp4]=1;
                    }
                for(int i=1;i<=6;i++)
                    for(int j=1;j<=6;j++)
                    {
                        int tmp1=cu[2][i],tmp2=cu[3][j],tmp3,tmp4;
                        tmp3=tmp1*10+tmp2;
                        tmp4=tmp2*10+tmp1;
                        vis[tmp3]=1;
                        vis[tmp4]=1;
                    }
    
            }
            for(int i=1;i<=99;i++)//从最小的1往后找,第一个没被标记的就是能表示的数的最大值了
                if(!vis[i])
                {
                    
                    cout<<i-1<<endl;
                    return 0;
    
                }
            
    
    }
    
  • 相关阅读:
    C++Builder中的异常传递
    lpc1343 usb isp not work in linux and mac
    玩玩Hiweed linux 2.0
    有关 stringWithString 和 initWithString
    Windows mobile 中获取内存使用情况
    玩玩xubuntu 8.10
    升级我的ipaq hx2110到Windows Mobile 6.0
    面试技巧 from IBM
    常用Sql语句
    c#的事件机制示例代码: 猫> 老鼠, 主人
  • 原文地址:https://www.cnblogs.com/eason9906/p/11754968.html
Copyright © 2011-2022 走看看