L1-050 倒数第N个字符串 - java

题目解析

输出 l 位字符串 的倒数 第 n 个字符串

解题思路

a ~ z 比作 0 ~ 25
举个例子: bcd=123bcd = 123
是前面数的 ((126)+2)26+3((1 * 26) + 2) * 26 + 3

所以也就能看出 他是2626进制的数

所以 l 位数 总共有 26l26^{l} 个数
所以 给定倒数 n 个 也就是 正数的 26ln26^{l} - n

代码

import java.io.*;
import java.math.*;
import java.util.*;

public class Main
{

	public static void main(String[] args)
	{
		int l = sc.nextInt();
		int n = sc.nextInt();

		n = (int) Math.pow(26, l) - n;

		int s[] = new int[l + 10];
		for (int i = l; i >= 1; i--)
		{
			s[i] = n % 26;
			n /= 26;
		}

		for (int i = 1; i <= l; i++)
			out.print((char) ('a' + s[i]));

		out.flush();
		out.close();
	}

	static Scanner sc = new Scanner(System.in);
	static PrintWriter out = new PrintWriter(System.out);
}


团体程序设计天梯赛-练习集-java

赞赏