時間限制: 1 sec 記憶體限制: 128 mb
題目描述
將 p 進位制 n 轉換為 q 進位制。p 和 q 的取值範圍為[2,36],其中,用到的數碼按從小到大依次為:0,1,2,3,4,5,6,7,8,9,a,b,...,z,不考慮小寫字母。
輸入一共1+m 行:
1行為 m,表示後面有 m 行(1 <= m <= 60).
其後的m行中,每行3個數: 進位制p,p進位制數n,以及進位制 q。
三個數之間用逗號間隔。
n 的長度不超過50位。
輸出轉換後的 q 進位制數。
樣例輸入
6樣例輸出18,2345678a123,18
15,23456,18
12,2345678,20
16,12345678,23
25,3456ab,21
18,ab1234567,22
2345678a123用普通的進位制轉換思維就可以了ac**:114e0
22b7a4
21a976l
7c2136
22jf0g367
1 #include進位制2 #include 3 #include 4 #include 5 #include 6
#define frn1(i,x,n) for (int i=x;i<=n;i++)
7#define fdn1(i,x,n) for (int i=x;i>=n;i--)
8#define frn0(i,x,n) for (int i=x;i9
#define frd0(i,x,n) for (int i=x;i>n;i--)
10using
namespace
std;
11int n,a[61],b[191
],len;
12string
s;13
void ex_change(int p,int
q)14
25 b[++tot]=stp;
26while(!a[k] && k<=len)
27 k++;28}
29 frd0(i,tot,0)30
if (b[i]<10
)31 printf("%d"
,b[i]);
32else
33 printf("
%c",char(b[i]+55
));34 puts(""
);35}36
intmain()
3748
for (int i=k+1;s[i]!='
,';k=++i)
49if (s[i]>='
0' && s[i]<='9'
)50 a[++len]=s[i]-48;51
else
52 a[++len]=s[i]-55
;53 frn0(i,k+1
,s.size())
54 q=q*10+s[i]-48;55
ex_change(p,q);56}
57return0;
58 }