数列

来源:互联网 发布:sql判断师傅为空 编辑:程序博客网 时间:2024/05/17 00:14
题目描述

给定一个正整数k(3k15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是:

1349101213,…

(该序列实际上就是:303130+313230+3231+3230+31+32,…)

请你求出这个序列的第N项的值(用10进制数表示)。

例如,对于k=3N=100,正确答案应该是981

输入

输入文件sequence.in只有1行,为2个正整数,用一个空格隔开:

k N

kN的含义与上述的问题描述一致,且3k1510N1000)。

输出

输出文件sequence.out为计算结果,是一个正整数(在所有的测试数据中,结果均不超过2.1*109)。(整数前不要有空格和其他符号)。

样例输入
3 100
样例输出
981这道题发现规律就可以用dfs搜出来,比如3^2  3^2+3^0  3^2+3^1  3^2+3^1+3^0.
#include <stdio.h>#include <math.h>#include <stdlib.h>#define LL long longint a, n, cnt;void dfs ( int k, LL sum ){    cnt ++;    if ( cnt == n )    {        printf ( "%lld\n", sum );        exit ( 0 );    }    for ( int i = 0; i < k; i ++ )        dfs ( i, sum+pow ( a, i ) );    //3^j+3^0 3^j+3^1 3^j+3^1+3^0}int main ( ){    int j;    scanf ( "%d%d", &a, &n );    for ( j = 0; ; j ++ )    {        if ( n-( 1 << j ) < 0 )            break ;        n = n-( 1 << j );    }    cnt = 0;    dfs ( j, pow ( a, j ) );    return 0;}

 
0 0
原创粉丝点击