1. 程式人生 > >ZZULIOJ 1143: 最大值—多種進位制

ZZULIOJ 1143: 最大值—多種進位制

題目描述輸入n個數,每個數的進位制由其後面的數字k指定,k>=2且k<=10, 輸出最大的數對應的十進位制數。

要求程式定義一個KTod()函式和一個main()函式,KToD() 函式的功能是將k進位制數轉化為十進位制整數,其餘功能在main()函式中實現。

int KToD(char str[], int k)

{

//函式返回k進位制數str對應十進位制整數

}
輸入首先輸入整數n,然後是n行,每行包含一個字串和一個整數k,用空格隔開,該字串表示一個k進位制數。所有輸入均為非負數。

輸出輸出最大的數對應的十進位制數。

樣例輸入4
1101 2
22121 3
276 8
134 10
樣例輸出232
提示 提示:將這四個數轉化為10進位制數分別是:13 232 190 134,故最大值是232.

#include<stdio.h>
#include<string.h>
int KToD(char ch[],int k);
int main(){
 char ch[31];
 int k;
 int max,j,i;
 int n,c=0;
 scanf("%d",&n);
 int a[n];
 scanf("%s%d",ch,&k);
 max=KToD(ch,k);
 for(i=2;i<=n;i++)
 {
  scanf("%s%d",ch,&k);
  if(KToD(ch,k)>max)
            max=
KToD(ch,k); } printf("%d",max); } int KToD(char ch[],int k){ int n=0,i=0,x=1; int len=strlen(ch); for(i=len-1;i>=0;i--){ n+=(ch[i]-'0')*x; x*=k; } return n; }