SOJ4453 Excel列數 進制轉換
阿新 • • 發佈:2018-06-02
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列數 進制轉換