您的位置:首页 > 其它

WOJ1115-An Excel-lent Problem

2017-09-03 19:39 197 查看
A certain spreadsheet program labels the columns of a spreadsheet using letters. Column 1 is labeled as 
A", column 2 as
B", ..., column
26 

as 
Z". When the number of columns is greater than 26, another letter is used. For example, column 27 is
AA", column 28 is 
AB" and
column <br/>52 is
AZ". It follows that column 53 would be 
BA" and so on. Similarly, when column
ZZ" is reached, the next column would be 
AAA",
<br/>then
AAB" and so on. 

The rows in the spreadsheet are labeled using the row number. Rows start at 1. 

The designation for a particular cell within the spreadsheet is created by combining the column label with the row label. For example, the 

upper-left most cell would be 
A1". The cell at column 55 row 23 would be
BC23". 

You will write a program that converts numeric row and column values into the spreadsheet designation. 


输入格式

Input consists of lines of the form: RnCm. n represents the row number [1,300000000] and m represents the column number, 1<=m<=300000000. The

values n and m define a single cell on the spreadsheet. Input terminates with the line: R0C0 (that is, n and m are 0). There will be no

leading zeroes or extra spaces in the input.


输出格式

For each line of input (except the terminating line), you will print out the spreadsheet designation for the specified cell as described above.


样例输入

R1C1
R3C1
R1C3
R299999999C26
R52C52
R53C17576
R53C17602
R0C0


样例输出

A1
A3
C1
Z299999999
AZ52
YYZ53
YZZ53

水题,照题意仔细做就行

#include <iostream>
#include <stdio.h>
using namespace std;
char f[]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
int bin[10];
int main(){
int r,c,i,j;
while(~scanf("R%dC%d%*c",&r,&c)){
if(!r&&!c)break;
int cnt=0;
while(c){
bin[cnt++]=c%26;
if(bin[cnt-1]==0){
bin[cnt-1]=26;
c--;
}
c/=26;
}
for(i=cnt-1;i>=0;i--)
printf("%c",f[bin[i]-1]);
printf("%d\n",r);
}
return 0;
}

import java.util.Scanner;
public class Main {
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
while(true)
{
String input = in.nextLine();
if(input.equals("R0C0"))
4000
break;
int index = 0;
while(input.charAt(index)!='C')
{
index++;
}
int num = Integer.parseInt(input.substring(1, index));
int letter = Integer.parseInt(input.substring(index+1, input.length()));

String result = "";
result = change(letter) + result;
while(true)
{
if(letter/26.0>1)
{
if(letter%26!=0)
{
letter = letter/26;
result = change(letter) + result;
}
else
{
letter = letter/26;
letter--;
result = change(letter) + result;
}
}
else
break;
}
System.out.println(result+num);
}
}

public static char change(int letter)
{
char m;
if(letter % 26 == 0)
m = 'Z';
else
m = (char) (letter%26 + 'A' -1);
return m;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: