题目描述

用过excel的都知道excel的列编号是这样的:
a b c .... z aa ab ac .... az ba bb bc .... yz za zb zc .... zz aaa aab aac .... 分别代表以下编号:1 2 3 .... 26 27 28 29 .... 52 53 54 55 .... 676 677 678 679 .... 702 703 704 705。请写个函数,完成一个正整数到这种字符串之间的转换。

输入描述

一行表示一个正整数

输出描述

excel样式的字符串

输入输出示例

序号样例输入样例输出说明
11a输出字符串
226z
327aa

题目解析

此题为简单的逻辑题,直接写即可。通过率100%。

C++源码

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
void trans(int n, string ans) {
    if (n <= 0)
        return;
    ans = "";
    while (n>0) {
        n -= 1;
        char t = (n % 26) + 'a';
        ans += t;
        n /= 26;
    }
    reverse(ans.begin(), ans.end());
    cout << ans << endl;
}
int main() {
    int n;
    cin >> n;
    string ans;
    trans(n, ans);
    return 0;
}

python源码

def trans(n):
    if n <= 0:
        return
    ans = ""
    while n > 0:
        n -= 1
        t = chr((n % 26) + ord('a'))
        ans += t
        n //= 26
    ans = ans[::-1]
    print(ans)

n = int(input())
trans(n)

Java源码

import java.util.Scanner;

public class Main {
    public static void trans(int n) {
        if (n <= 0) {
            return;
        }
        String ans = "";
        while (n > 0) {
            n -= 1;
            char t = (char)((n % 26) + 'a');
            ans += t;
            n /= 26;
        }
        ans = new StringBuilder(ans).reverse().toString();
        System.out.println(ans);
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        trans(n);
    }
}
最后修改:2023 年 10 月 29 日
如果觉得我的文章对你有用,请随意赞赏