ZZULIOJ 1143: 最大值—多種進位制
阿新 • • 發佈:2018-11-30
題目描述輸入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;
}