本文主要是介绍1594 B. Special Numbers,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题意
给一个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;
}
这篇关于1594 B. Special Numbers的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!