Excelアドレス
2332 ワード
タイトル:Excelアドレス
Excelセルのアドレス表示は興味深いもので、アルファベットで列番号を表しています.
たとえば、
Aは第1列を示し、
Bは2列目を表し、
Zは26列目を表し、
AAは27列目を示し、
ABは28列目を表し、
BAは53列目を表し、
....
もちろんExcelの最大カラム番号には限界があるので、変換するのは難しくありません.
この表現を一般化したいなら、大きな数字を長いアルファベット配列に変換できますか?
本題は,入力された数字に対して,その対応するExcelアドレス表示方式を出力することを要求するものである.
たとえば、
入力:
26
プログラムは次のように出力されます.
Z
例えば、
入力:
2054
プログラムは次のように出力されます.
BZZ
入力された整数範囲[12147483647]
生産資源約定:
ピークメモリ消費量(仮想マシンを含む)<256 M
CPU消費<1000 ms
要求通りに出力してください.ヘビを描いて印刷しないでください.「入力してください.」と入力します.
注意:
main関数は0を返す必要があります.
ANSI C/ANSI C++標準のみ使用します.
コンパイル環境やオペレーティングシステムに依存する特殊な関数を呼び出さないでください.
すべての依存する関数は、ソースファイル内のincludeを明確にする必要があります.
エンジニアリング設定により、共通ヘッダファイルを省略することはできません.
プログラムをコミットするときは、所望の言語タイプとコンパイラタイプを選択することに注意してください.
------------------------------
上のコードにはまだ問題があり、もうすぐ授業があるので、バグを書きました.先に残しておいて、今度直します.の
Excelセルのアドレス表示は興味深いもので、アルファベットで列番号を表しています.
たとえば、
Aは第1列を示し、
Bは2列目を表し、
Zは26列目を表し、
AAは27列目を示し、
ABは28列目を表し、
BAは53列目を表し、
....
もちろんExcelの最大カラム番号には限界があるので、変換するのは難しくありません.
この表現を一般化したいなら、大きな数字を長いアルファベット配列に変換できますか?
本題は,入力された数字に対して,その対応するExcelアドレス表示方式を出力することを要求するものである.
たとえば、
入力:
26
プログラムは次のように出力されます.
Z
例えば、
入力:
2054
プログラムは次のように出力されます.
BZZ
入力された整数範囲[12147483647]
生産資源約定:
ピークメモリ消費量(仮想マシンを含む)<256 M
CPU消費<1000 ms
要求通りに出力してください.ヘビを描いて印刷しないでください.「入力してください.」と入力します.
注意:
main関数は0を返す必要があります.
ANSI C/ANSI C++標準のみ使用します.
コンパイル環境やオペレーティングシステムに依存する特殊な関数を呼び出さないでください.
すべての依存する関数は、ソースファイル内のincludeを明確にする必要があります.
エンジニアリング設定により、共通ヘッダファイルを省略することはできません.
プログラムをコミットするときは、所望の言語タイプとコンパイラタイプを選択することに注意してください.
------------------------------
package com.company;
import java.util.*;
//
public class Main
{
static long [] shang=new long [9];//
static int [] yushu=new int [9];//
static String A="ZABCDEFGHIJKLMNOPQRSTUVWXY";
static Scanner sc=new Scanner(System.in);
public static void main(String[] args){
long n=sc.nextInt();
shang[0]=n;
yushu[0]=0;
int p=(int)Math.ceil(Math.log(n)/Math.log(26));//
//while(Sparrow[Pbb]!=0)
//Sparrow[Pbb+1]=Sparrow[Pbb]/26;+++++++
// , ,
for(int i=1; i<=p ;i++){
shang[i]=shang[i-1]/26;
yushu[i]=(int)shang[i-1]%26;
}
for(int i=p; i>0; i--){
System.out.print(A.charAt(yushu[i]));
}
}
}
上のコードにはまだ問題があり、もうすぐ授業があるので、バグを書きました.先に残しておいて、今度直します.の
package com.company;
import java.util.*;
//
public class Main
{
static long [] yushu=new long [9];//
static String A="0ABCDEFGHIJKLMNOPQRSTUVWXYZ";
static Scanner sc=new Scanner(System.in);
public static void main(String[] args){
long n=sc.nextInt();
yushu[0]=0;
int i=1;
while(n!=0){
yushu[i]=((n%26==0)?26:n%26);
n/=26;
i++;
}
for(int a=i-1; a>0; a--){
System.out.print(A.charAt((int)yushu[a]));
}
}
}