首先將於除轉為 10 進制,讀入數值後,用一函式轉換:
#define SIZE 1000最後只需將被除數從大到小一個一個讀入,每次讀入都要乘上進位制,再去和 r 取餘數,最後要轉回進位制印出。
char p[SIZE + 1], m[10], print[SIZE + 1];
int b, r;
int get10Basic()
{
int n = 0, i;
int len = strlen(m);
for (i = 0; i < len; i ++)
n = n * b + (m[i] - '0');
return n;
}
主程式內 ....
scanf("%s %s", p, m);
int len = strlen(p);
int i;
r = get10Basic();
int n = 0;printbBasic 函式程式碼:
for (i = 0; i < len; i ++)
{
n *= b;
n += p[i] - '0';
n %= r;
}
printbBasic(n);
void printbBasic(int n)
{
int i = 0, j;
for ( ; n; n /= b)
print[i ++] = n % b;
if (i == 0) printf("0");
for (j = i - 1; j >= 0; j --)
printf("%c", print[j] + '0');
printf("\n");
}
By David.K
p10551題目連結
回ACM題庫目錄
回首頁
沒有留言:
張貼留言