程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> UVa10341 Solve It!

UVa10341 Solve It!

編輯:C++入門知識

題意: 解方程:   輸入格式:    輸入包含不超過2100組數據。每行為一組數據,包含6個整數p, q, r, s, t, u (0<=p,r<=20, -20<=q, s, t <=0) 。 輸出格式:         對於每組數據,輸出所有解,按照從小到大順序排列,每個解均保留小數點後4位。如果無解,輸出 No  solution 。   分析: 在0<=x<=1時, 方程f(x)=0前五項都是減函數, 而最後一項是常數。 所以當f(0)>=0 且f(1)<=0時f(x)=0有唯一解,否則無解。   code: #include <stdio.h>   #include <math.h>   #define F(x) (p*exp(-x) + q*sin(x) + r*cos(x) +s*tan(x) + t*(x)*(x) +u)      const double eps=  1e-14;      int main()   {       int p, r,q, s, t, u;       while(scanf("%d%d%d%d%d%d",&p, &q, &r, &s, &t, &u) == 6)       {           double f0 = F(0), f1 = F(1);           if(f1 >eps || f0<-eps) printf("No solution\n");           else           {               double x = 0, y =1, m;               for(int i=0; i<100; ++i)               {                   m = x + (y-x)/2;                   if(F(m) <0) y = m;                   else x = m;               }               printf("%.4lf\n", m);           }       }       return 0;   }    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved