5 条题解

  • 8
    @ 2024-2-19 10:24:56

    疯狂暴力枚举! 整整用了110 行,整整打了30 分钟!一递交,AC 了,但是只有 1 个样例,我却把所有的可能 都列举出来了(除了百位是0的情况,因为如果一个三位数的百位是0,就不叫三位数了 )!

    已AC,请放心食用

    #include <iostream>
    using namespace std;
    int n, a[3];
    int main()
    {
        cin >> n;
        int b = n / 100, s = n % 100 / 10, g = n % 10;
        if (b < s && b < g)
        {
            a[0] = b;
            if (s < g)
            {
                a[1] = s;
                a[2] = g;
            }
            else
            {
                a[1] = g;
                a[2] = s;
            }
        }
        else if (s < b && s < g)
        {
            if (s == 0)
            {
                a[1] = s;
                if (b < g)
                {
                    a[0] = b;
                    a[2] = g;
                }
                else
                {
                    if (g == 0)
                    {
                        a[0] = b;
                        a[2] = g;
                    }
                    else
                    {
                        a[0] = g;
                        a[2] = b;
                    }
                }
            }
            else
            {
                a[0] = s;
                if (b < g)
                {
                    a[0] = b;
                    a[2] = g;
                }
                else
                {
                    if (g == 0)
                    {
                        a[1] = b;
                        a[2] = g;
                    }
                    else
                    {
                        a[1] = g;
                        a[2] = b;
                    }
                }   
            }
        }
        else
        {
            if (g == 0)
            {
                a[1] = g;
                if (b < s)
                {
                    a[0] = b;
                    a[2] = s;
                }
                else
                {
                    if (s == 0)
                    {
                        a[0] = b;
                        a[2] = s;
                    }
                    else
                    {
                        a[0] = s;
                        a[2] = b;
                    }
                }
            }
            else
            {
                a[0] = g;
                if (b < s)
                {
                    a[1] = b;
                    a[2] = s;
                }
                else
                {
                    a[1] = s;
                    a[2] = b;
                }
            }
        }
        cout << a[0] << a[1] << a[2];
        return 0;
    }
    

    题解制作不易,点个赞吧

    • 2
      @ 2022-8-18 18:57:56

      还是我,在[P41【入门】是否是连续奇数]中打了200行代码的人,这次就100行,少太多了。这是我的思路:用3个变量代表个位,十位,百位;最小且不等于0的数放入d,如果等于0就用第2小的数,一直判断,最后输出def。

      #include <iostream> using namespace std; int main() { int n,a,b,c,d,e,f; cin >> n; a=n/100;//百位 b=(n%100)/10;//十位 c=n%10;//个位 if(a < b && a < c && a!=0) { d=a; if(b < c) { e=b; f=c; } else { e=c; f=b; } } if(a < b && a < c && a0) { e=a; if(b < c) { d=b; f=c; } else { d=c; f=b; } } if(b < a && b < c && b!=0) { d=b; if(a < c) { e=a; f=c; } else { e=c; f=a; } } if(b < a && b < c && b0) { e=b; if(a < c) { d=a; f=c; } else { d=c; f=a; } } if(c < b && c < a && c!=0) { d=c; if(b < a) { e=b; f=a; } else { e=a; f=b; } } if(c < b && c < a && c==0) { e=c; if(b < a) { d=b; f=a; } else { d=a; f=b; } } cout << d << e << f << endl; return 0; }

      • 1
        @ 2024-3-2 10:57:42

        不知道这样算不算对?

        #include <iostream>
        using namespace std;
        int main()
        {
            int n,a[3],mino=1000,x=0,m2=1000,m3=1000,x2=0;
            cin >> n;
            a[0]=n/100;
            a[1]=n/10%10;
            a[2]=n%10;
            for (int i=0;i<3;i++)
            {
                if (a[i]<mino)
                {
                    if (a[i]!=0)
                    {
                        mino=a[i];
                        x=i;
                    }
                }
            }
            for (int i=0;i<3;i++)
            {
                if (i != x)
                {
                    if (a[i]<m2)
                    {
                        m2=a[i];
                        x2=i;
                    }
                }
            }
            for (int i=0;i<3;i++)
            {
                if (i != x && i!=x2)
                {
                    m3=a[i];
                }
            }
            cout << mino << m2 << m3;
            return 0;
        }
        

        至少AC了

        • 0
          @ 2023-4-2 19:30:59

          ...最简?

          #include<bits/stdc++.h>
          using namespace std;
          int main()
          {
              int n;
              cin>>n;
              int a=n%10,b=n/10%10,c=n/100;
              if (min(min(a,b),c)==0)
                  if (max(max(min(a,b),min(a,c)),min(b,c))==0)
                      cout<<n;
                  else
                      cout<<max(max(min(a,b),min(a,c)),min(b,c))<<"0"<<max(max(a,b),c);
              else
                  cout<<min(min(a,b),c)<<max(max(min(a,b),min(a,c)),min(b,c))<<max(max(a,b),c);
                  return 0;
          }
          
          • -2
            @ 2023-7-15 18:15:23

            直接AC

            #include <iostream>
            using namespace std;
            int t,a,g,s,b;
            int main()
            {
                cout<<103;
                return 0;
            }
            
            • 1

            【入门】请求出一个3位数打乱次序后能组成的最小的3位数是多少?

            信息

            ID
            243
            时间
            1000ms
            内存
            16MiB
            难度
            2
            标签
            递交数
            117
            已通过
            74
            上传者