出题人真是丧(gan)心(de)病(piao)狂(liang)!
题面说的各种玄乎各种牛逼然而却毫无卵用
对于最后一组a b c ,因为要加上lastans以后=0,所以明显倒数第二组的解就是ans=-a
然后我们把这个ans代入上一组数据的表达式,就可以得到一个关于上上组数据的解,然后不断向前推,结果就出来了。
就出来了。
出来了。
来了。
了。
。
简直丧心病狂
#include <stdio.h>
#include <algorithm>
#include <string.h>
using namespace std;
#define ll long long
const int N=1000005;
ll a[N],b[N],c[N];
ll ans,n,m,t[N],x[N];
int main(){
scanf("%I64d",&n);
for (int i=1;i<=n;i++)
scanf("%I64d",&x[i]);
scanf("%I64d%I64d%I64d",&a[1],&b[1],&c[1]);
m=1;
while (a[m]!=b[m] && b[m]!=c[m]) ++m,scanf("%I64d%I64d%I64d",&a[m],&b[m],&c[m]);
t[m-1]=-a[m];
for (int i=m-1;i>1;i--){
ll p,q;
p=(a[i]*(t[i]+1)*x[t[i]]*x[t[i]]+(b[i]+1)*t[i]*x[t[i]]+c[i]+t[i]);
q=(t[i]+1)*x[t[i]]*x[t[i]]+t[i]*x[t[i]]+1;
t[i-1]=-p/q;
}
for (int i=1;i<m;i++) printf("%I64d\n",t[i]);
return 0;,
}