链接:https://ac.nowcoder.com/acm/contest/19305/1019
来源:牛客网
题目描述
输入描述:
输入1行,为2个正整数,用一个空格隔开:k N(k、N的含义与上述的问题描述一致,且3 ≤ k ≤ 15,10 ≤ N ≤ 1000 )。
输出描述:
输出一个正整数(在所有的测试数据中,结果均不超过2.1*109)。(整数前不要有空格和其他符号)。
示例1
输入
3 100
输出
981
此题一直没找到规律,后来想着转换为2进制,然后用k的次方和形式输出可以的到正确答案。应该就是要找到规律这个题就比较好做了
#include<stdio.h>
#include<math.h>
int main()
{
int a[1000];
int k;
long long N;
int i=0;//实际长度为i+1
long long sum=0;
scanf("%d%ld",&k,&N);
//将位数转为2进制数
while(N!=0)
{
a[i++]=N%2;
N=N/2;
}
for(int j=0;j<=i;j++)
{
if(a[j]!=0)
{
sum+=pow(k,j);
}
else{
continue;
}
}
printf("%ld",sum);
}