疑惑

题目总版

SUINE @ 2024-11-03 16:32:49

现在有N个数,请你分别判断他们是否可能是二进制、八进制、十进制、十六进制。例如,15A6F 就只可能是十六进制,而 1011 则是四种进制皆有可能。

输入格式 输入的第一行为一个十进制表示的整数 NN。接下来 NN 行,每行一个字符串,表示需要判断的数。保证所有字符串均由数字和大写字母组成,可能以 00 开头。保证不会出现空行。

保证 1 \le N \le 10001≤N≤1000,保证所有字符串长度不超过 1010。

输出格式 输出 NN 行,每行 44 个数,用空格隔开,分别表示给定的字符串是否可能表示一个二进制数、八

例如,对于只可能是十六进制数、十进制数、十六进制数。使用 11 表示可能,使用 00 表示不可能。进制数的 15A6F,就需要输出 0 0 0 1;而对于四者皆有可能的 1011,则需要输出 1 1 1 1。```c

include<bits/stdc++.h>

using namespace std; int main() { int n; cin>>n; while(n--) { char s[11]; cin>>s; char c='0'; for(int i=0;s[i];i++) { if(c<s[i]) { c=s[i]; } else if(c>'F') { cout<<"0 0 0 0"<<endl; } else if(c>'9') { cout<<"0 0 0 1"<<endl; } else if(c>='8') { cout<<"0 0 1 1"<<endl; } else if(c>='2') { cout<<"0 1 1 1"<<endl; } else { cout<<"1 1 1 1"<<endl; } } }

return 0;

}


by 鳶一折纸 @ 2024-11-03 21:19:17

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin >> n;
    while (n--)
    {
        char s[11];
        cin >> s;
        char c = '0';
        for (int i = 0; s[i]; i++)
        {
            if (c < s[i])
            {
                c = s[i];
            }
        }
        if (c > 'F')
        {
            cout << "0 0 0 0" << endl;
        }
        else if (c > '9')
        {
            cout << "0 0 0 1" << endl;
        }
        else if (c >= '8')
        {
            cout << "0 0 1 1" << endl;
        }
        else if (c >= '2')
        {
            cout << "0 1 1 1" << endl;
        }
        else
        {
            cout << "1 1 1 1" << endl;
        }
    }

    return 0;
}

把判断的部分挪出来


by 鳶一折纸 @ 2024-11-03 21:19:36

@SUINE


by SUINE @ 2024-11-04 19:16:08

@鳶一折纸 感谢大佬!


|