Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
求测试数据 (附代码WA的不认得家)#include<iostream> #include<cmath> using namespace std; double x0,x1; int num[1000],_num[1000],num2[1000],_num2[1000],n,_n,ans; double f,fp; const double eps=1e-6; char str; void Newton_root() { int i,j; num2[0]=0; for(i=1;i<=n;++i) num2[i-1]=i*num[i]; for(i=1;i<=_n;++i) _num2[i+1]=-i*_num[i]; for(ans=0;ans<=1000;++ans) { for(f=num[0],i=1;i<=n;++i) f+=pow(x0,double(i))*double(num[i]); for(i=1;i<=_n;++i) f+=pow(x0,double(-i))*double(_num[i]); for(fp=num2[0],i=1;i<n;++i) fp+=pow(x0,double(i))*double(num2[i]); for(i=2;i<=_n+1;++i) fp+=pow(x0,double(-i))*double(_num2[i]); if(0==fp){ ans=10000; return; } x1=x0-f/fp; // cout<<x1<<"="<<x0<<"-"<<f<<"/"<<fp<<endl;// if(fabs(f)<eps) return; if((fabs(x1-x0))<eps){ ++ans; return; } x0=x1; } } int main() { int tmp,p,i; while(scanf("%d",&tmp)!=EOF){ memset(num,0,sizeof(num));//正数项 memset(_num,0,sizeof(_num));//负数项 _n=n=0; do{ scanf("%c",&str); if(' '==str){ num[0]+=tmp; }else if('x'==str){ scanf("%c",&str); if(' '==str){ num[1]+=tmp; if(n<1) n=1; }else{ scanf("%d",&p); if(p>0){ num[p]+=tmp; if(n<p) n=p; }else{ _num[-p]+=tmp; if(_n<-p) _n=-p; } } }else if('='==str) break; scanf("%d",&tmp); }while(1); scanf("%d",&tmp); scanf("%lf",&x0); Newton_root(); if(ans>1000) printf("Bad x0 or bad equation!\n"); else printf("%d\n",ans); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator