算法设计与编程 进制转换

37 阅读1分钟

赛氪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;
	}
}