本文主要是介绍P1062 [NOIP2006 普及组] 数列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
给定一个正整数 k(3≤k≤15),把所有 k 的方幂及所有有限个互不相等的 k 的方幂之和构成一个递增的序列,例如,当 k=3 时,这个序列是:
1,3,4,9,10,12,13,…1,3,4,9,10,12,13,…
(该序列实际上就是:30,31,30+31,32,30+32,31+32,30+31+32,…30,31,30+31,32,30+32,31+32,30+31+32,…)
请你求出这个序列的第 N 项的值,用 10 进制数表示。
例如,对于 k=3,N=100,正确答案应该是 981。
输入格式
两个由空格隔开的正整数 k,N(3≤k≤15,10≤N≤1000)。
输出格式
一个正整数。整数前不要有空格和其他符号。
输入输出样例
输入 #1
3 100
输出 #1
981
说明/提示
NOIP 2006 普及组 第四题
#include <iostream>
#include <stack>
#include <cmath>
using namespace std;long long k, n, ans;
stack<int> S;int main() {cin >> k >> n;while(n) S.push(n & 1), n >>= 1;while(!S.empty()) ans += S.top() * pow(k, S.size()-1), S.pop();cout << ans << endl;return 0;
}
这篇关于P1062 [NOIP2006 普及组] 数列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!