UVa 927

来源:互联网 发布:淘宝店铺如何出售转让 编辑:程序博客网 时间:2024/06/06 05:40

题目:数列{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;} 


原创粉丝点击