标签:
5
-2 3 1 -5 2
-5 -4 145
-1 -6 -509
-9 -14 40
-3 -13 21
-3 -3 -3
5
4
3
3
FROM HZWER
我们考虑最后一行,因为其代表文件结束,所以解密后的a=b=c=0。那么我们可以知道倒数第二行的答案(LastAns=-a=-b=-c)。那么原始式子即转换成一个简单的三元一次式子(只和a,b,c有关),然后这解密后的值又可以由上一行的答案和输入的a0,b0,c0得到,于是就变成了一个只和LastAns有关系的一元一次式子,所以又可以得到了上一行的答案。所以这样一直算回去就好了。
出题人真是丧失
var i,j,l,m,n:longint; k1,k2:int64; x,a,b,c,ans:array[1..500000] of int64; function work1(i:longint):int64; begin exit( (i+1)*sqr(x[i]) ); end; function work2(i:longint):int64; begin exit( x[i]*i ); end; function work3(i:longint):int64; begin exit( i*x[i]+i ); end; begin read(n); for i:=1 to n do read(x[i]); m:=0; while true do begin inc(m); read(a[m],b[m],c[m]); if (a[m]=b[m])and(b[m]=c[m]) then break; end; ans[1]:=0-a[m]; l:=1; for i:=m-1 downto 2 do begin j:=ans[l]; inc(l); k1:=a[i]*work1(j)+b[i]*work2(j)+c[i]+work3(j); k2:=work1(j)+work2(j)+1; ans[l]:=(-k1) div k2; end; for i:=m-1 downto 1 do writeln(ans[i]); end.
标签:
原文地址:http://www.cnblogs.com/yangqingli/p/4890207.html