Excel地址

解题思路:

根据题中歪歪和笨笨的话可以有两种解法。

1.输入的数为多大,则循环+1多少次,当值为27时就要进行进位操作。这时要分情况讨论。

当集合中元素为一个时,如26,则需要变为1 1,集合元素个数加一。

当集合元素个数大于1时,当首位不为26,如1 2 3 26 26 ,变为1 2 4 1 1,

倒着循环,不为26的第一个元素位置数值+1,其后面的数值都为1.

当首位为26时,如 26 26,变为 1 1 1,集合元素个数加一,

所有元素变为1

在根据ASCII码对照关系,进行赋值转换。

2.当作二十六进制来做,注意的是余数为0时,即为字母Z,余数从0变为26,除数-1。

如 52 AZ 52/26=2....0=1...26 1/26=0.....1 1 26对应AZ

解题代码:

java 复制代码
public class Exceldizhi {
//BZZ 2054
//AA  27
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long n = sc.nextLong();
		ArrayList<Integer> list = new ArrayList<Integer>();
		list.add(0);
		for (int i = 1; i <= n; i++) {
			int num = list.get(list.size() - 1) + 1;
			if (num <= 26) { // 末尾<26
				list.set(list.size() - 1, num);
			} else {//大于26则进位
				boolean isfirst26 = true;
				if (list.size() == 1) {//集合中只有一个元素 例如26变为 1 1
					list.add(0, 1);
					list.set(1, 1);
				} else {
					for (int j = list.size() - 2; j >= 0; j--) {//例如1 2 26 26 26 变为1 3 1 1 1
						if (list.get(j) < 26) {
							list.set(j, list.get(j) + 1);
							for (int k = j + 1; k < list.size(); k++) {
								list.set(k, 1);
							}
							isfirst26 = false;
							break;
						}
					}
					if (isfirst26) {//集合中首位元素为26,例如 26 26 变为1 1 1
						list.add(0, 1);
						for (int m = 1; m < list.size(); m++) {
							list.set(m, 1);
						}
					}
				}
			}
		}
		String str = "";
		for (int i = 0; i < list.size(); i++) {
			str += (char) (list.get(i) + 64);
		}
		System.out.println(str);
	}
}
java 复制代码
public static void main(String[] args) {
	//2054  2054/26=79...0   79/26=3...1   3/26=0...3   310
	//26 26/26=1...0
	//20 20/26=0...20
	Scanner sc = new Scanner(System.in);
	long n = sc.nextLong();
	ArrayList<Integer> list = new ArrayList<Integer>();
	while(true) {
		int mod=(int)(n%26);
		if(mod==0) {
			list.add(26);
			n--;
		}else {
			list.add(mod);
		}
		n=n/26;
		if(n==0)
			break;
	}
	String str="";
	for(int i=list.size()-1;i>=0;i--) {
		str+=(char)(list.get(i)+64);
	}
	System.out.println(str);
}

运行结果:

相关推荐
代码小将1 小时前
Leetcode209做题笔记
java·笔记·算法
专注_每天进步一点点1 小时前
idea 启动Springboot项目在编译阶段报错:java: OutOfMemoryError: insufficient memory
java·spring boot·intellij-idea
dhxhsgrx2 小时前
PYTHON训练营DAY25
java·开发语言·python
Musennn2 小时前
leetcode 15.三数之和 思路分析
算法·leetcode·职场和发展
不知几秋3 小时前
数字取证-内存取证(volatility)
java·linux·前端
CM莫问5 小时前
<论文>(微软)避免推荐域外物品:基于LLM的受限生成式推荐
人工智能·算法·大模型·推荐算法·受限生成
康谋自动驾驶6 小时前
康谋分享 | 自动驾驶仿真进入“标准时代”:aiSim全面对接ASAM OpenX
人工智能·科技·算法·机器学习·自动驾驶·汽车
chxii6 小时前
5java集合框架
java·开发语言
C++ 老炮儿的技术栈7 小时前
什么是函数重载?为什么 C 不支持函数重载,而 C++能支持函数重载?
c语言·开发语言·c++·qt·算法
yychen_java7 小时前
R-tree详解
java·算法·r-tree