分类平均
题目描述
给定 n(n≤10000) 和 k(k≤100),将从 1 到 n 之间的所有正整数可以分为两类:A 类数可以被 k 整除(也就是说是 k 的倍数),而 B 类数不能。请输出这两类数的平均数,精确到小数点后 1 位,用空格隔开。
数据保证两类数的个数都不会是 0。
输入格式
无
输出格式
无
输入输出样例
输入 #1
100 16
输出 #1
56.0 50.1
#include<stdio.h>
int main()
{
int n,k;
int i;
int t;
int sum1=0,sum2=0;
int total1=0,total2=0;
float end1,end2;
scanf("%d %d",&n,&k);
for(i=1;i<=n;i++)
{
t=i;
if(t%k==0)
{
sum1+=t;
total1=total1+1;
}
else
{
sum2+=t;
total2=n-total1;
}
}
end1=sum1/total1;
end2=sum2/total2;
printf("%.1f %.1f",end1,end2);
printf("\n");
}
#include<stdio.h>
int main(){
int n,k;
scanf("%d%d",&n,&k);
int yes=0,no=0,y1=0,n1=0;//y和n是两个总和,y1和n1是个数
for(int i=1;i<=n;++i){
if(i%k==0){
yes+=i;//如果i是k的倍数,总和yes加上i
y1++;//个数+1
}
else{
no+=i;//如果i不是k的倍数,总和no加上i
n1++;//个数+1
}
}
printf("%.1f %.1f",(float)yes/y1,(float)no/n1);//注意这里输出是保留一位小数啊
return 0;
}