(纪中)【数学】2018

119 篇文章 0 订阅

(File IO): input:2018.in output:2018.out
时间限制: 1000 ms 空间限制: 262144 KB 具体限制
Goto ProblemSet


题目描述
在这里插入图片描述


输入
在这里插入图片描述
输出
在这里插入图片描述


样例输入
在这里插入图片描述
样例输出
在这里插入图片描述


数据范围限制
在这里插入图片描述


解题思路
蓦然回首,那年那月那时,那容斥原理似曾相识。
所以。。。。图解走起。。。
在这里插入图片描述
我们现在就是要相加所有可能后去重。首先是(2的倍数)(1009的倍数)为x1y2+y1x2,而2018的倍数还要加一个去重,为z1(d-c+1-x2-y2+z2)+z2*(b-a+1-x1-y1).


代码

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
	freopen("2018.in","r",stdin);
	freopen("2018.out","w",stdout);
	long long a,b,c,d;
    long long x1,y1,z1,x2,y2,z2,bsy;//我的变量我做主
	scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
	x1=(b/2)-(a-1)/2;
	y1=(b/1009)-(a-1)/1009;
	z1=(b/2018)-(a-1)/2018;
	x2=(d/2)-(c-1)/2;
	y2=(d/1009)-(c-1)/1009;
	z2=(d/2018)-(c-1)/2018;
	bsy=x1*y2+x2*y1+z1*(d-c+1-x2-y2+z2)+z2*(b-a+1-x1-y1)//本题精华
	cout<<bsy;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值