code:
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <cmath>
using namespace std;
int a = 0, b = 0, k = 0, x = 0, y = 0;
void translate1()//把k进制的数转化为10进制
{
int cnt = 0;
x = y = 0;
while(a)//转化为10进制
{
x += a%10*pow(k, cnt++);
a /= 10;
}
cnt = 0;
while(b)
y += b%10*pow(k, cnt++), b /= 10;
}
int translate2(int x)
{
int i = 0, ans = 0, cnt = 0;
char s[102];
while(x)
{
s[cnt++] = x%k;
x /= k;
}
for(i = cnt-1; i>-1; i--)
ans = ans*10+s[i];
return ans;
}
void divide(char num[], int p, int &r, char q[])//num为除数, p为余数,r为余数, q为商, 上面k为基数
{
int len = strlen(num), i = 0, s = 0, n[1002];
for(i = 0; i<len; i++) n[i] = num[i]-'0';
int tmp = 0, rem = 0, tmp_q[1002];//tmp为当前试除数, tmp_q为试除数的商
i = 0;
while(i<len && tmp<p)
{
tmp = tmp*10+n[i];
i++;
}
i--;//商的位置
s = i;//
a = tmp, b = p;
translate1();
tmp_q[i] = translate2(x/y);
rem = translate2(x%y);
tmp = rem;
while(i<len-1)
{
tmp = tmp*10+n[i+1];
if(tmp<p)
tmp_q[i+1] = 0;
else
{
a = tmp;
b = p;
translate1();
tmp_q[i+1] = translate2(x/y);
rem = translate2(x%y);
tmp = rem;
}
i++;
}
r = tmp;
for(i = 0; i<len-s; i++)
{
tmp_q[i+s] += '0';
q[i] = tmp_q[i+s];
}
q[i] = 0;
}
int main()
{
int r = 0;
char a[1002], q[1002];
while(scanf("%d", &k), k)
{
scanf("%s %d", a, &b);
divide(a, b, r, q);
printf("%d\n", r);
}
return 0;
}