关于floor函数
原题链接:71101.Force2025-09-07 19:31:31
发布于:浙江
为什么我在考试时 floor
函数没用 int
强制转换就爆零了,今天加了个int就A了,虽然返回值是double类型,但输出应该是一致的啊,难不成数据全都大到用e表示了吗?
0pts:
#include<bits/stdc++.h>
#define int long long
#define ldouble long double
using namespace std;
const double pi=acos(-1.0);
int n;
double a=0.0,b=0.0;
/*ldouble sq(ldouble x,ldouble y)
{
return sqrt(x*x+y*y);
}*/
signed main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
double x,f,r;
cin>>x>>f;
r=x*pi/180.0;
a+=f*cos(r);
b+=f*sin(r);
}
double R=hypot(a,b);
double ans;
if(R<1e-12)ans=0.0;
ans=(fabsl(R)<1e-12?0:atan2(b,a)*180.0/pi);
while(ans<0)ans+=360.0;
cout<<floor(R+1e-12)<<" "<<floor(ans+1e-12)<<endl;
return 0;
}
AC:
#include<bits/stdc++.h>
#define int long long
#define ldouble long double
using namespace std;
const double pi=acos(-1.0);
int n;
double a=0.0,b=0.0;
/*ldouble sq(ldouble x,ldouble y)
{
return sqrt(x*x+y*y);
}*/
signed main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
double x,f,r;
cin>>x>>f;
r=x*pi/180.0;
a+=f*cos(r);
b+=f*sin(r);
}
double R=hypot(a,b);
double ans;
if(R<1e-12)ans=0.0;
ans=(fabsl(R)<1e-12?0:atan2(b,a)*180.0/pi);
while(ans<0)ans+=360.0;
cout<<(int)floor(R+1e-12)<<" "<<(int)floor(ans+1e-12)<<endl;
return 0;
}
全部评论 1
好厉害啊,根本看不懂啊!
3天前 来自 山东
1
有帮助,赞一个