POJ 2273 An Excel-lent Problem
Posted on 2011-09-05 21:53 acpeng 閱讀(487) 評(píng)論(0) 編輯 收藏 引用 所屬分類: ACM程序把整數(shù)轉(zhuǎn)化為excel對(duì)應(yīng)的列值http://poj.org/problem?id=2273
Description
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 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", 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.
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
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.
Output
For each line of input (except the terminating line), you will print out the spreadsheet designation for the specified cell as described above.
Sample Input
R1C1 R3C1 R1C3 R299999999C26 R52C52 R53C17576 R53C17602 R0C0
Sample Output
A1 A3 C1 Z299999999 AZ52 YYZ53 YZZ53
Source
Greater New York 2004
進(jìn)制轉(zhuǎn)化問(wèn)題,把列數(shù)改成26進(jìn)制輸出,分別用A,B...Z代替1,2,3...這里base[0]='Z',表示n與26余數(shù)為0時(shí)的取值,但進(jìn)位問(wèn)題需要注意,分余數(shù)是否為0兩種情況分析。
代碼:
#include<stdio.h>
#define R 26
char base[30]="ZABCDEFGHIJKLMNOPQRSTUVWXYZ";
void fun(int N)
{
int i=0,j; char str[10];
while(N>R)
{
str[i++]=base[N%R];
N=N%R==0?N/R-1:N/R;
}
str[i]=base[N];
for(j=i;j>=0;j--)
printf("%c",str[j]);
}
int main()
{
int m,n;
while(scanf("%*c%d%*c%d",&m,&n)!=EOF)
{
getchar();
if(m==0 && n==0)break;
fun(n);
printf("%d\n",m);
}
return 0;
}
進(jìn)制轉(zhuǎn)化問(wèn)題,把列數(shù)改成26進(jìn)制輸出,分別用A,B...Z代替1,2,3...這里base[0]='Z',表示n與26余數(shù)為0時(shí)的取值,但進(jìn)位問(wèn)題需要注意,分余數(shù)是否為0兩種情況分析。
代碼:


























