日暮鳖鳖 @ 2020-08-23 16:03:57
#include<cstdio>
int main()
{
int n,k,i;
int num_A,num_B;
float all_A,all_B;
scanf("%d %d",&n,&k);
for ( i = 1; i <= n; i++)
{
if (i%k==0)
{
all_A+=i;
num_A++;
}
else
{
all_B+=i;
num_B++;
}
}
printf("%.1f %.1f\n",all_A/num_A,all_B/num_B);
return 0;
}
all_A 和all_B分别是AB两类的数字总和,num_A和num_B是记录数字的。 样例都通过了,自己编的数据也过了,数据类型用float和double都是全WA
by Terrible @ 2020-08-23 16:13:19
@日暮鳖鳖
精度不够,建议double替换float,实在不行用long double。
不过正常的浮点型答案问题,应该先写出来整型的表达式,用整型和整型做除,最终得出来浮点型才相当精确。
by JK_LOVER @ 2020-08-23 16:25:03
@日暮鳖鳖
楼上有一定道理,问题还在于变量没有初始化。
#include<cstdio>
int n,k,i;
int num_A,num_B;
double all_A,all_B;
int main()
{
// int n,k,i;
// int num_A,num_B;
// double all_A,all_B;
scanf("%d %d",&n,&k);
for ( i = 1; i <= n; i++)
{
if (i%k==0)
{
all_A+=i;
num_A++;
}
else
{
all_B+=i;
num_B++;
}
}
printf("%.1f %.1f\n",all_A/num_A,all_B/num_B);
return 0;
}
by Starry___sky @ 2020-08-23 16:27:30
@日暮鳖鳖
你把num_A,num_B改成float或者double就好啦
by 日暮鳖鳖 @ 2020-08-23 16:43:20
@Starry___sky @Terrible 感谢!!!修改过后AC啦!!!???? @JK_LOVER 还真的诶~~~~谢谢你!!!