1、整除。
题目描述
求从1到一个数有多少个数能被5或者6或者8整除。
输入格式
多组数据,处理到文件结尾。每行输入一个n(0<n<2⋅108)n(0<n<2⋅108)。
输出格式
输出结果,每个结果占一行。
输入数据:
1000
输出数据:
400
代码如下:
#include<stdio.h>
int main()
{
int n, x, y, z, sum, xy, xz, yz, xyz;
while (scanf("%d", &n) != EOF)
{
sum = 0;
x = n / 5;
y = n / 6;
z = n / 8;
xy = n / 30;
xz = n / 40;
yz = n / 24;
xyz = n / 120;
sum = x + y + z - xy - xz - yz + xyz;
printf("%d\n", sum);
}
return 0;
}
这段代码中,如果输入1000,运行的话,则是
x=200
y=166
z=125
xy=33
xz=25
yz=41
xyz=8
sum=200+166+125-33-25-41+8=400
从1到1000正好有400个数能被5或者6或者8整除。
其中这段代码可以用韦恩图来理解:
其中会有重复的部分,减去重复的部分便是
总的能被5或者6或者8整除的数。
2、优越数
题目描述
给定3个数,如果有两个数大于他们的平均数则称这组数为优越数,现在需要你来判断给出的数据是不是优越数
输入格式
第一行输入一个整数t,代表有t组数据。
接下来每一行输入包含一组整数a,b,c用空格分隔。
输出格式
对于每组输入数据输出一行,判断它是否为一组优越数,如果是输出Yes
,否则输出No
。
输入数据:
2
1 2 3
1 4 4
输出数据:
No
Yes
代码如下:
#include<stdio.h>
int main()
{
int a, b, c, sum, ave, n;
scanf("%d\n", &n);##这行代码代表有n组数据
while (scanf("%d %d %d", &a, &b, &c) != EOF)
{
sum = a + b + c;
ave = sum / 3;##ave为三组数的平均数
if ((a > ave && b > ave) || (a > ave && c > ave) || (b > ave && c > ave))##if/else语句
printf("Yes\n");
else printf("No\n");
}
return 0;
}
3、分段函数
此问题一般靠if/else语句来实现。