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; }