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,如果有更好的方法,欢迎前来探讨

相关推荐
Chester_19993 天前
CSP202104C.DHCP服务器
开发语言·程序人生·蓝桥杯
_Narcissus_6 天前
二分算法笔记及例题
数据结构·c++·笔记·算法·蓝桥杯·查找·二分算法
aqiu1111119 天前
【算法刷题】蓝桥杯/AtCoder:删除元素后的中位数问题(Symmetry / Median)
算法·蓝桥杯·排序·中位数
恣逍信点14 天前
《凌微经》价值论:变化即本体,价值即涌现
人工智能·科技·程序人生·蓝桥杯·业界资讯·交友·哲学
小龙报17 天前
【优选算法】1.搜索插入位置 2.x的平方根
java·c语言·数据结构·c++·python·算法·蓝桥杯
依然鸣21 天前
PTA团体程序设计天梯赛L2真题讲解L2-037-040
c++·经验分享·学习·算法·蓝桥杯·深度优先·pat考试
YuforiaCode22 天前
第十六届蓝桥杯 2025 C/C++组 数列差分
c语言·c++·蓝桥杯
QAQo7T22 天前
Python组蓝桥杯备赛超详细知识点总结笔记_排序算法篇
笔记·python·算法·蓝桥杯·排序算法
普通网友22 天前
蓝桥杯 DP 优化:从 O (n²) 到 O (n) 的滚动数组实战
职场和发展·蓝桥杯
醉颜凉22 天前
蓝桥杯2025年第十六届省赛真题-好串的数目
职场和发展·蓝桥杯