问题描述
小易最近在数学课上学习到了集合的概念,集合有三个特征:1.确定性 2.互异性 3.无序性.
小易的老师给了小易这样一个集合:
S = { p/q | w ≤ p ≤ x, y ≤ q ≤ z }
需要根据给定的w,x,y,z,求出集合中一共有多少个元素。小易才学习了集合还解决不了这个复杂的问题,需要你来帮助他。
输入描述
输入包括一行:
一共4个整数分别是w(1 ≤ w ≤ x),x(1 ≤ x ≤ 100),y(1 ≤ y ≤ z),z(1 ≤ z ≤ 100).以空格分隔
输出描述
输出集合中元素的个数
输入例子
1 10 1 1
输出例子
10
分析
元素互斥,立马想到set;再加上无序性,unordered_set没跑了
note
- float和double的精度问题:float精确到小数点7位,double精确到小数点16位
- unordered_set vs set
代码
#include <cstdio>
#include <vector>
#include <algorithm>
#include <unordered_set>
using namespace std;
int main()
{
int w, x, y, z;
scanf("%d%d%d%d", &w, &x, &y, &z);
unordered_set<float> us;
for (int i = w; i <= x; i++)
{
for (int j = y; j <= z; j++)
{
us.insert((float)i / j);
}
}
printf("%d\n", us.size());
return 0;
}