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
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
@鳶一折纸 感谢大佬!