1 条题解
-
0
Guest
-
1
仔细观察题目 相加幂数0,1,0+1,2,0+2,1+2,0+1+2,3,0+3,1+3,0+1+3,2+3,0+2+3,1+2+3,0+1+2+3…… 第一部分有1项,第二部分有2项。第n部分就有2^n项。 第n部分的第一项就是k^n,第n部分的第二项就是k^n+f[1],第n部分的第i项就是k^n+f[i-1] 故能“轻易”写出 #include<bits/stdc++.h> using namespace std; long long a[10]; long long f[1010]; int main() { long long k,n; cin >> k >> n; int i,j; a[0] = 1; int s = 1; for (i = 1; i <= 9; i++) a[i] = a[i-1] * k; for (i=0 ; i <= 9 ; i++) { f[s] = a[i]; for (j = 1 ; j <= s ; j++) f[s+j] = f[s] + f[j]; s *= 2; if (f[n]!=0) { printf("%d",f[n]); return 0; } } return 0; }//网上好像有将其幂数转换成二进制的做法好像更简单
- 1
信息
- ID
- 398
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者