赛氪OJ-专注于算法竞赛的在线评测系统 (saikr.com)
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n; cin >> n;
string B = "0123456789ABCDEF";
for (int i = 0; i < n; i++) {
string s; cin >> s;
bool b2 = true;
bool b8 = true;
bool b10 = true;
bool b16 = true;
for (char c: s) {
size_t p = B.find(c); // 查找是否在
//如果输入的S在B里面找不到说明不是2,8,10,16进制,因为2,8,10,16进制必然由B里面的成员组成,这个时候就结束程序,什么也不输出
if (p == string::npos) {
b2 = b8 = b10 = b16 = false;
break;
}
if (p > 1) b2 = false; //如果p除了0,1外的任何数存在,说明不是二进制
if (p > 7) b8 = false; //如果p里包含比7大的数字,说明不是八进制
if (p > 9) b10 = false; //如果p里面包含了比9大的数字,说明不是10进制
}
cout << b2 << ' ' << b8 << ' ' << b10 << ' ' << b16 << endl;
}
}