• PTA基础编程题目集(一)(pow函数用法,7-13 日K蜡烛图、7-18 二分法求多项式单根(*))


    7-13 日K蜡烛图 (15 分)

    https://pintia.cn/problem-sets/14/problems/793

    AC代码:

     1 #include <cstdio>
     2 #include <cmath>
     3 #include <algorithm>
     4 using namespace std;
     5 int main()
     6 {
     7     double open,high,low,close;
     8     scanf("%lf %lf %lf %lf",&open,&high,&low,&close);
     9     if(open>close) printf("BW-Solid");
    10     else if(open==close) printf("R-Cross");
    11     else printf("R-Hollow");
    12     if((high>open&&high>close)&&(low<open&&low<close)) printf(" with Lower Shadow and Upper Shadow
    ");
    13     else if(high>open&&high>close) printf(" with Upper Shadow
    ");
    14     else if(low<close&&low<open) printf(" with Lower Shadow
    ");
    15     return 0;
    16  } 

     7-18 二分法求多项式单根 (20 分)

     https://pintia.cn/problem-sets/14/problems/798

    AC代码:

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <cmath>
     4 #include <algorithm>
     5 using namespace std;
     6 double fal(double a3,double a2,double a1,double a0,double x)
     7 {
     8     double value=a3*x*x*x+a2*x*x+a1*x+a0;
     9     return value; 
    10 }
    11 int main()
    12 {
    13     double a3,a2,a1,a0,x;
    14     double low,high,mid;
    15     double threshold=0.001;
    16     double value1,value2,value3;
    17     scanf("%lf %lf %lf %lf",&a3,&a2,&a1,&a0);
    18     scanf("%lf %lf",&low,&high);
    19     while(high-low>=threshold)
    20     {
    21         value1=fal(a3,a2,a1,a0,low);
    22         value2=fal(a3,a2,a1,a0,high);
    23         if(value1*value2==0){
    24             if(value1==0){
    25                 printf("%.2f
    ",low);
    26                 break;
    27             }
    28             else if(value2==0)
    29             {
    30                 printf("%.2f
    ",high);
    31                 break;
    32             }
    33         }
    34         else{
    35             if(value1*value2<0)
    36             {
    37                 mid=(high+low)/2;
    38                 value3=fal(a3,a2,a1,a0,mid);
    39                 if(value3==0)
    40                 {
    41                     printf("%.2f
    ",mid);
    42                     break;
    43                 }
    44                 else if(value1*value3<0) high=mid;
    45                 else if(value2*value3<0) low=mid; 
    46             }
    47             else if(value1*value2>0) break;
    48         }
    49     }
    50     if(high-low<threshold){
    51        // if(fal(a3,a2,a1,a0,low)==0) printf("%.2lf
    ",low);
    52         //else if(fal(a3,a2,a1,a0,high)==0) printf("%.2lf
    ",high);
    53         printf("%.2f
    ",(low+high)/2);
    54     }
    55     return 0;
    56 }

    我日,这题卡了我好久,前面几次提交都是部分正确,没有考虑当端点函数值为0的情况,后来在while循环中加了个条件判断,再提交竟然没答案输出,然后我在想是不是double类型输入输出格式问题,改了还是答案不输出,提交报WA,然后我调试一下,发现value1和value2值根本就不对,说明程序一开始求函数值就错了,然后我就没用pow函数,而是直接让pow(x,3)表示成x*x*x,再输出,居然AC。提交也满分了,然后上网百度pow函数的用法,这是我搜到的:

    如果底数 x 为负数并且指数 y 不是整数,将会导致 domain error 错误。
    如果底数 x 和指数 y 都是 0,可能会导致 domain error 错误,也可能没有;这跟库的实现有关。
    如果底数 x 是 0,指数 y 是负数,可能会导致 domain error 或 pole error 错误,也可能没有;这跟库的实现有关。
    如果返回值 ret 太大或者太小,将会导致 range error 错误
    

      

    天晴了,起飞吧
  • 相关阅读:
    平时用到的Linux命令
    angular.element方法汇总
    CSS display:inline-block
    CSS:position:fixed使用(转)
    常见浏览器兼容性问题与解决方案【转】
    部分浏览器兼容问题
    php对应js math.random
    php stdclass转数组
    写在2016年末
    VirtualBox中Ubuntu 14.04屏幕分辨率不能设置的问题
  • 原文地址:https://www.cnblogs.com/jianqiao123/p/11908877.html
Copyright © 2020-2023  润新知