题意解析

kk的正幂次组成一个长为nn的递增数组。

思路解析

稍加观察可发现,数组中的第ii项的值就是二进制下的ii每一位按位置远离转为kk进制。 用数组存储kk的正幂次即可快速计算。

#include<bits/stdc++.h>
using namespace std;
long long k,n,res,s[1005];
long long tt(long long x,int y){//计算x的y次方
	long long res=1;
	for(int i=1;i<=y;i++)res*=x;
	return res;
}
int main(){
	freopen("num.in","r",stdin);
	freopen("num.out","w",stdout);
	cin>>k>>n;
	for(int i=0;i<=20;i++){
		if(n>>i&1)res+=tt(k,i);//取k的二次方的的第i位的k次方
	}
	cout<<res;
}

0 条评论

目前还没有评论...