2015苏州大学ACM-ICPC集训队选拔赛(2)1004
2016-01-16 23:33
274 查看
草爷要的数
Problem Description
今天校队队员们准备放松一下,我们队就准备选一些数字玩,然而每个人喜欢的数字是不同的,刻盘喜欢x(1<=x<=1^9),凯凯喜欢y(1<=y<=1^9),而我则喜欢z(1<=z<=1^9),争论不出结果的情况下,我们决定只要是这三个数中任意一个数的倍数我们都取,为了满足游戏要求,我们还决定只要[a,b]范围内的数(1<=a<=b<=1^18),请问满足要求的数一共有多少呢?注:求a和b的最大公因数函数:
long long gcd(long long a,long long b){
return b?gcd(b,a%b):a;
}
Input
多组数据(<=1000),请读到文件结尾。每组数据一行5个整数,x,y,z,a,b,含义及数据范围如题目描述。
注意使用 long long
Output
对于每组数据输出一个整数,表示满足要求的数的个数,每个结果占一行。Sample Input
2 3 5 1 10 4 6 9 5 20 4 4 8 10 20
Sample Output
8 7 3
Author
奚政容斥。。。
#include<stdio.h> //#include<bits/stdc++.h> #include<string.h> #include<iostream> #include<math.h> #include<sstream> #include<set> #include<queue> #include<map> #include<vector> #include<algorithm> #include<limits.h> #define inf 0x3fffffff #define INF 0x3f3f3f3f #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define LL long long #define ULL unsigned long long using namespace std; LL x,y,z,a,b; long long gcd(long long a,long long b) { return b?gcd(b,a%b):a; } long long lcm(long long n, long long m) { long long p = gcd(n, m); return (n/p*m); } LL SUM(LL x) { LL sum=0; sum+=(b/x)-(a-1)/x; return sum; } int main () { while(cin>>x>>y>>z>>a>>b) { LL sum_1=0,sum_2=0,sum_3=0; LL sum_4=0; LL sum_5=0; sum_1+=SUM(x); sum_2+=SUM(y); sum_3+=SUM(z); // cout<<lcm(x,y)<<endl; sum_4+=SUM(lcm(x,y))+SUM(lcm(x,z))+SUM(lcm(y,z)); sum_5+=SUM(lcm(lcm(x,y),lcm(y,z))); cout<<sum_1+sum_2+sum_3-sum_4+sum_5<<endl; } return 0; }
相关文章推荐
- liunx的安装以及常用的命令操作
- UWP——HttpClient模拟浏览器的GET、POST请求之Win10 Mobile测试
- [Linux] zip 与 unzip 命令
- MongoDB中上传和下载文件
- 关于Maven的安装及创建项目
- 欢迎使用CSDN-markdown编辑器
- 牛客笔试题---求最长重复词长度之和
- 集合运算
- HTML5绘图基础_03_绘制连续线条
- 简单工厂模式
- mysql创建用户
- 友斯考特·杨(Scott Young)看我怎么驾驭MIT计算机科学的课程
- 静态顺序表常见各个接口的实现
- 简单的进度条实现
- Linux下配置Tomcat服务器
- [转]中英文停止词表(stopword)
- IIS6升级到 IIS 7AJax出错问题 设置 ajax.dll web.config 配置
- windows运维脚本:通过vbscript更新excel文档oracle数据源
- 算法作业代码
- Codeforces 609C Load Balancing