ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

基础编程题目集一

2019-12-10 09:01:30  阅读:288  来源: 互联网

标签:lf high 题目 double 编程 集一 low close include


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\n");
13     else if(high>open&&high>close) printf(" with Upper Shadow\n");
14     else if(low<close&&low<open) printf(" with Lower Shadow\n");
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\n",low);
26                 break;
27             }
28             else if(value2==0)
29             {
30                 printf("%.2f\n",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\n",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\n",low);
52         //else if(fal(a3,a2,a1,a0,high)==0) printf("%.2lf\n",high);
53         printf("%.2f\n",(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 错误

  

标签:lf,high,题目,double,编程,集一,low,close,include
来源: https://www.cnblogs.com/jianqiao123/p/11908877.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有