狗的名字 ATCOER-ABC-171-C One Quadrillion and One Dalmatians

狗的名字 ATCOER-ABC-171-C

One Quadrillion and One Dalmatians

题目链接

我们可以将名字看成26进制的数,就可以转化为将一个10进制转26进制的数的问题。但我们现在有个问题:

1表示a

2表示b

3表示c

……

25表示y

z怎么表示?

当然是用0了,但任意进制的数都不可以有前导0,所以26的输出就会变成az,所以我们在转进制时有个小技巧——每得到一位就把n--,如果是26的倍数的话,减去1就不会向前进1;如果不是26的倍数减去1以后不会影响结果(此处为整除结果)。

如:

  • 26%26=0
  • 将26-1得25
  • 25/26=0
  • 因为已经等于0,所以不会计算下一位
  • 答案就为z

具体可以调试+看代码理解

CODE

#include<bits/stdc++.h>
using namespace std;

#define ll long long

ll a[5000005];

ll n,cnt;

int main()
{
    scanf("%lld",&n);
    while(n>0)
    {
        a[++cnt]=n%26;
        if(a[cnt]==0) a[cnt]=26;
        n--;
        n/=26;
    }
    for(int i=cnt;i>=1;i--)
    {
        cout<<(char)(a[i]+'a'-1);
    }
}
posted @   彬彬冰激凌  阅读(57)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示