1. 程式人生 > >SOJ4453 Excel列數 進制轉換

SOJ4453 Excel列數 進制轉換

IT 不能 ostream ava tor num In 轉換 continue

描述

我們都知道Excel的列數是用字母表示的,比如第1列對應A,第27列對應AA。

假設給定一個正整數n,你能給出它所對應的字母表示麽?

輸入格式

程序需要讀入多個測試樣例,每個測試樣例中:

一個正整數n(0 < n < 200000)

輸出格式

對每個測試樣例:

所對應的字母表示

樣例輸入

26
171135

樣例輸出

Z
ISDC

資源約定

峰值內存消耗 < 256M

CPU消耗 < 2000ms


請嚴格按要求輸出,不要畫蛇添足地打印類似:“請您輸入...” 的多余內容。

所有代碼放在同一個源文件中,調試通過後,拷貝提交該源碼。

[C]

註意: main函數需要返回0

註意: 只使用ANSI C/ANSI C++ 標準,不要調用依賴於編譯環境或操作系統的特殊函數。

註意: 所有依賴的函數必須明確地在源文件中 #include <xxx>, 不能通過工程設置而省略常用頭文件。

[Java]

註意:不要使用package語句。不要使用jdk1.7及以上版本的特性。

註意:主類的名字必須是:Main,否則按無效代碼處理。

Author

imcmy


AC代碼:
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <string.h>
#include <vector>
#include <queue>
#include 
<map> #include <math.h> using namespace std; typedef long long ll; const int maxn = 1000 + 5; const int mods = 1e9 + 7; int num[20000]; int main(){ int n; while(scanf("%d",&n)==1){ if(n<=26){ printf("%c\n",A+n-1); continue; }
int len=0; while(n!=0){ num[len]=(n%26-1); if(num[len]==-1)num[len]=25; if(n%26==0)n=n/26-1; else n=n/26; len++; } for(int i=len-1;i>=0;i--){ printf("%c",A+num[i]); } printf("\n"); } return 0; }

SOJ4453 Excel列數 進制轉換