这道题一开始没什么思路,去网上搜了下,发现原来很有规律,同样是进制转换而已
把n转成二进制,再把二进制的那个转成k进制的就行,看下面的例子能更好理解。
1, 3, 4,9 , 10 , 12 , 13.....
30,31,30+31,32,30+32,31+32,30+31+32
1, 10, 11, 100, 101, 110 , 111,
#include<iostream>
#include<cmath>
using namespace std;
int arr[1000];
string tentoer(int n){
int i=0;
while(n!=0){
arr[i++]=n%2;
n /= 2;
}
string str;
for(int k=i-1; k >=0; k--)
str+=char(arr[k]+'0');
return str;
}
int main()
{
int k,n;
while(cin >> k >> n){
string str=tentoer(n);
int len=str.length();
int sum=0;
for(int i=0; i < len; i++)
sum+=(str[i]-'0')*pow(k,len-1-i);
cout << sum << endl;
}
}