1. 程式人生 > >給定一個正整數k(3≤k≤15),把所有k的方冪及所有有限個互不相等的k的方冪之和構成一個遞增的序列,例如,當k=3時,這個序列是: 1,3,4,9,10,12,13,… (該序列實際上就是:3^0,3^1,3^0+3^1,3^2,3^0+3^2,3^1+3^2,3^0+3^1+3^2,…) 請你求

給定一個正整數k(3≤k≤15),把所有k的方冪及所有有限個互不相等的k的方冪之和構成一個遞增的序列,例如,當k=3時,這個序列是: 1,3,4,9,10,12,13,… (該序列實際上就是:3^0,3^1,3^0+3^1,3^2,3^0+3^2,3^1+3^2,3^0+3^1+3^2,…) 請你求

只有1行,為2個正整數,用一個空格隔開:
k N
(k、N的含義與上述的問題描述一致,且3≤k≤15,10≤N≤1000)。

 計算結果,是一個正整數(在所有的測試資料中,結果均不超過2.1*10^9)。(整數前不要有空格和其他符號)。

#include<stdio.h>

int n2[1010];
long long l1 = 1;
long long n, k;
long long sm(long long i,long long k)
{
long long s = 1;
int j;
for (j = 1; j <= i; j++)
{
s *= k;
}
return s;
}
int main()
{
int i;
scanf("%lld %lld",&k,&n);
while(n > 0)
{
n2[l1++] = n % 2;
n /= 2;
}
l1--;
long long s = 0;
for (i = 1; i <= l1; i++)
{
if (n2[i])
{
s += sm(i-1,k);
}
}
printf("%lld",s);
return 0;
}