//具体求解过程请参照郭老的ppt
#include<iostream>
#include<cstring>
#include<cstdlib> //abs函数头文件
using namespace std;
int n,r,an,ar;
int arr[100],len;
int main()
{
while(cin>>n) //在网上看到还能这么处理输入,好东西啊,之前因为无法用while(cin>>n>>r),所以傻乎乎地用getline(cin,str),再对str分拆成两个数来,之后还要判断n的正负,实在是麻烦...
{
if((cin>>r)==0)
break;
if(n==0)
{
cout<<"0\n";
continue;
}
an=abs(n);ar=abs(r);
memset(arr,0,sizeof(arr));
len=0;
while(an)
{
arr[len++]=an%ar;
an/=ar;
}
for(int i=0;i<len;++i)
{
if(arr[i]>=ar)
{
arr[i+1]++;
arr[i]-=ar;
}
if(arr[i]>0&&((n>0&&i%2)||(n<0&&!(i%2)))) //之前写成 n<0&&!i%2 老是错, 原来 !优先级比 % 要高
{
arr[i+1]++;
arr[i]=ar-arr[i];
}
if(i==len-1&&arr[len]>0)
len++;
}
for(int i=len-1;i>=0;--i)
if(arr[i]<10)
cout<<arr[i];
else
cout<<char(arr[i]+55);
cout<<endl;
}
return 0;
}
#include<iostream>
#include<cstring>
#include<cstdlib> //abs函数头文件
using namespace std;
int n,r,an,ar;
int arr[100],len;
int main()
{
while(cin>>n) //在网上看到还能这么处理输入,好东西啊,之前因为无法用while(cin>>n>>r),所以傻乎乎地用getline(cin,str),再对str分拆成两个数来,之后还要判断n的正负,实在是麻烦...
{
if((cin>>r)==0)
break;
if(n==0)
{
cout<<"0\n";
continue;
}
an=abs(n);ar=abs(r);
memset(arr,0,sizeof(arr));
len=0;
while(an)
{
arr[len++]=an%ar;
an/=ar;
}
for(int i=0;i<len;++i)
{
if(arr[i]>=ar)
{
arr[i+1]++;
arr[i]-=ar;
}
if(arr[i]>0&&((n>0&&i%2)||(n<0&&!(i%2)))) //之前写成 n<0&&!i%2 老是错, 原来 !优先级比 % 要高
{
arr[i+1]++;
arr[i]=ar-arr[i];
}
if(i==len-1&&arr[len]>0)
len++;
}
for(int i=len-1;i>=0;--i)
if(arr[i]<10)
cout<<arr[i];
else
cout<<char(arr[i]+55);
cout<<endl;
}
return 0;
}