题意
给一个n,和k
特殊数字: 不同的n的幂次方之和构成的数字,并且按顺序排列。
求第k个特殊数字
解析
可以看成底数为n的二进制
比如第3(11)个特殊数字
就是
1
∗
n
0
+
1
∗
n
1
1*n^0+1*n^1
1∗n0+1∗n1
代码
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const int mod=1e9+7;
void solve(){
int n,k;
cin>>n>>k;
ll res=0,p=1;
while(k){
if(k&1){
res=res+p;
res%=mod;
}
k>>=1;
p*=n;
p%=mod;
}
cout<<res<<endl;
}
int main() {
int t;
cin>>t;
while(t--){
solve();
}
return 0;
}