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

1051 复数乘法 (15分)

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

第一次提交:

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

错误原因:

最后 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

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

代码:

#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;
}
上一篇:1051 Pop Sequence (25point(s)) 需要二刷*栈的出栈顺序问题


下一篇:PTA乙级1051