年号字串-2019届蓝桥杯B组(脑筋急转弯)
https://www.lanqiao.cn/problems/605/learning/?contest_id=51
题解
这题看似是一道进制转换题目
实则还有很多坑点
比如对于数字702
我们通常进制转换会将其变为110
然而702对应的实际字母是ZZ
问题出在哪了?
实际上这道题转换后不能存在0
我们得到转换后的110这种串需要先预处理一下
把所有的0向前借位,然后就是ZZ了
for(int i=0;i<s-1;i++)
{
if(t[i]<=0)
{
t[i+1]--;
t[i]+=26;
}
}
注意是t[i]+=26而不是t[i]=26
因为t[i]可能因为借位变成负数
然后这道题就轻松解决了
#include<stdio.h>
#include<iostream>
#include<cstdlib>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
//freopen("uva.txt","r",stdin);
int n;
scanf("%d",&n);
string t;
int s=0;
while(n)
{
t+=n%26;
n/=26;
s++;
}
string ans;
for(int i=0;i<s-1;i++)
{
if(t[i]<=0)
{
t[i+1]--;
t[i]+=26;
}
}
if(t[s-1]==0) s--;
for(int i=s-1;i>=0;i--)
{
ans+=t[i]+'A'-1;
}
cout<<ans;
return 0;
}
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人