1.数列

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;
}

 

posted @ 2017-10-06 20:23  Ed_Sheeran  阅读(204)  评论(0编辑  收藏  举报