题目:数列{an},an = c0 + c1*n + ... + ci*n^i,数列{bm}为d*1个a1,d*2个a2,...,
求数列{bm}的第k个值。
分析:数学。直接利用(p*(p+1))/ 2定位到k对应的ap即可。
说明:可以利用二分优化。
#include <stdio.h>
int c[22];
long long a(int n, int i)
{
long long ans = 0LL;
for (int j = i; j >= 0; -- j) {
ans = ans * n + c[j];
}
return ans;
}
int main()
{
int C, i, d, k;
while (~scanf("%d",&C))
while (C --) {
scanf("%d",&i);
for (int j = 0; j <= i; ++ j) {
scanf("%d",&c[j]);
}
scanf("%d%d",&d,&k);
int p = 1;
while (p*(p+1)/2*d < k) {
p ++;
}
printf("%lld\n",a(p, i));
}
return 0;
}