首页 > 其他 > 详细

PTA乙级 (1051 复数乘法 (15分))

时间:2020-01-23 20:33:15      阅读:140      评论:0      收藏:0      [点我收藏+]

1051 复数乘法 (15分)

https://pintia.cn/problem-sets/994805260223102976/problems/994805274496319488

第一次提交:

技术分享图片

错误原因:

最后 2 3 测试点问题
就是对0.00这个点的A B的取法,
绝对值小于0.005,取到的就是0.00(保留两位)
+0.005就是0.01,-0.005就是-0.01,
所以正数是>=0.005 负数<=-0.005,0.00介于两者之间,其他位数也可以参考

代码:

#include <iostream>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>
#include <cstdio>
using namespace std;
int main()
{
	double r1,p1,r2,p2;
	cin>>r1>>p1>>r2>>p2;
	double a,b;
	a=r1*r2*cos(p1+p2);
	b=r1*r2*sin(p1+p2);
	printf("%.2f",a);
	if(b<0) printf("%.2fi\n",b);
	else printf("+%.2fi\n",b);
	return 0;
}

  

第二次提交:AC

技术分享图片

代码:

#include <iostream>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>
#include <cstdio>
using namespace std;
int main()
{
	double r1,p1,r2,p2;
	cin>>r1>>p1>>r2>>p2;
	double a,b;
	a=r1*r2*cos(p1+p2);
	b=r1*r2*sin(p1+p2);
	if(a>-0.005&&a<0.005) cout<<"0.00";
	else printf("%.2f",a);
	if(b>=0.005) printf("+%.2fi\n",b);
	else if(b>-0.005&&b<0.005) printf("+0.00i\n");
	else printf("%.2fi\n",b);
	return 0;
}

PTA乙级 (1051 复数乘法 (15分))

原文:https://www.cnblogs.com/jianqiao123/p/12231182.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!