/* return Bs: if r a root of sigma_i(P), |r| < Bs[i] */ static GEN nf_root_bounds(GEN P, GEN T) { long lR, i, j, l, prec; GEN Ps, R, V, nf; if (RgX_is_rational(P)) return logmax_modulus_bound(P); T = get_nfpol(T, &nf); P = Q_primpart(P); prec = ZXY_get_prec(P); l = lg(P); if (nf && nfgetprec(nf) >= prec) R = gel(nf,6); else R = roots(T, prec); lR = lg(R); V = cgetg(lR, t_VEC); Ps = cgetg(l, t_POL); /* sigma (P) */ Ps[1] = P[1]; for (j=1; j<lg(R); j++) { GEN r = gel(R,j); for (i=2; i<l; i++) gel(Ps,i) = poleval(gel(P,i), r); gel(V,j) = logmax_modulus_bound(Ps); } return V; }
int main() { int degree=0,*coeff,*points,j,k,count = 1; while(1) { scanf("%d",°ree); if(degree==-1) break; j=0; coeff = (int*) calloc(degree+1,sizeof(int)); while(j<=degree) { scanf("%d",&coeff[degree-j]); j++; } j=0; scanf("%d",&k); points = (int*) calloc(k,sizeof(int)); printf("Case %d: \n",count); while(j<k) { scanf("%d",&points[j]); printf("%lld\n",poleval(coeff,points[j],degree)); j++; } count++; free(coeff); free(points); } }