1.数列
(sequence.pas/c/cpp)
【问题描述】
给定一个正整数k(3≤k≤15),把所有k 的方幂及所有有限个互不相等的k 的方幂之
和构成一个递增的序列,例如,当k=3 时,这个序列是:
1,3,4,9,10,12,13,…
(该序列实际上就是:30,31,30+31,32,30+32,31+32,30+31+32,…)
请你求出这个序列的第N 项的值(用10 进制数表示)。
例如,对于k=3,N=100,正确答案应该是981。
【输入文件】
输入文件sequence.in 只有1 行,为2 个正整数,用一个空格隔开:
k N
(k、N 的含义与上述的问题描述一致,且3≤k≤15,10≤N≤1000)。
【输出文件】
输出文件sequence.out 为计算结果,是一个正整数(有的测试数据中,结果可能超
过2.1*109)。(整数前不要有空格和其他符号)。
【输入样例】
3 100
【输出样例】
981
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; long long p=1,a[2005]={0,1}; int K,N,y=1; int main() { int x; cin>>K>>N; while(y<=N) { p*=K; a[++y]=p; x=y; for(int i=1;i<x;i++) a[++y]=a[i]+p; if(y>N)break; } cout<<a[N]<<endl; }