P12121 [蓝桥杯 2024 省 B 第二场] 进制(C++)

看到一道很有意思的算法题

这道题目说人话就是,这个数字给你转换进制,范围为11~36,哪一种转换方式不含字母,它给了个例子,2558转16进制是a1c,含有字母a和c,那16进制就不符合题目要求,要排除16,既然给的范围那么大,那干脆就写个程序让机器算,暴力解法一个一个算过去,看看哪个只包含数字

复制代码
#include <bits/stdc++.h>
using namespace std;
long long a, b, n[10001];

int main() {
	long long num = 8100178706957568;
	const char zifu[] = "0123456789abcdefghijklmnopqrstuvwxyz";
	for (int r = 11; r < 36; r++) {
		cout << r << "进制转换为:";
		long long d = 0;
		a = num;
		while (a != 0) {
			b = a % r;
			a /= r;
			d++;
			n[d] = b;
		}
		
		for (int i = d; i >= 1; i--) {
			if (n[i] > 9) {
				cout << zifu[n[i]];
			}
			else {
				cout << n[i];
			}
		}
		cout << endl;
		
	}
}

可能你会觉得太麻烦了,一个一个看过去万一看错了怎么办,没事,还有一个更直观的方法,加个bool类型的变量来判断

复制代码
#include <bits/stdc++.h>
using namespace std;
long long a, b, n[10001];

int main() {
	long long num = 8100178706957568;
	
	for (int r = 11; r < 36; r++) {
		cout << r << "进制转换为:";
		long long d = 0;
		a = num;
		while (a != 0) {
			b = a % r;
			a /= r;
			d++;
			n[d] = b;
		}
		bool flag = true;
		for (int i = d; i >= 1; i--) {
			
			if (n[i] > 9) {
				flag = false;
			}
		}
		cout << flag << endl;
	}
}

综上所述,答案是32,如果有更好的方法,欢迎前来探讨

相关推荐
智者知已应修善业3 天前
【51单片机只有一个8*8点阵数据如何滚动起来一片595+一组IO+花样】2022-1-15
c++·经验分享·笔记·单片机·蓝桥杯·硬件架构
Dream it possible!5 天前
蓝桥杯_翻转_C++
c++·算法·蓝桥杯
鑫 源10 天前
VS2019 for mac里用c#开发Mac OS应用 避坑 和 源码
职场和发展·蓝桥杯
aqiu11111111 天前
【蓝桥杯】0仙境诅咒 — BFS/DFS 图论连通性问题(C++ 题解)
蓝桥杯·深度优先·宽度优先
捷瑞电子工坊20 天前
嵌入式蓝桥杯从零点亮第一个LED
stm32·蓝桥杯·cubemx·嵌入式·led·ll·锁存
aqiu1111111 个月前
【数位 DP / 记忆化搜索】蓝桥云课 - 光轨区的 AI 数 题解
c++·算法·蓝桥杯·数位dp
aqiu1111111 个月前
【并查集 / 图论】蓝桥云课 - 魔法大陆的城市群(求无向图连通块数量)题解
蓝桥杯·图论
aqiu1111111 个月前
【LeetCode 902】最大为 N 的数字组合 - 详细题解与数位组合思路
数据结构·算法·leetcode·蓝桥杯·数位dp
Chester_19991 个月前
CSP202312C.树上搜索
开发语言·数据结构·c++·蓝桥杯·stl
CoderYanger1 个月前
A.每日一题:3622. 判断整除性
java·程序人生·算法·leetcode·面试·职场和发展·蓝桥杯