HDU 6286(容斥定理)

题目链接

2018只有1,2,1009,2018四个因子
在这里插入图片描述

容斥原理:2018只有1,2,1009,2018四个因子(1n,2018m)(2n,1009m)(2n,2018m)(1009n,2m)(1009n,2018m)(2018n,1m)(2018n,2m)(2018n,1009m)(2018n,2018m)这九个组合,然后去除一些重复的就可以了。
(2018n,2m)(2018n,1009m)(2018n,2018m)包含于(2018n,1m);
(2n,2018m)包含于(1n,2018m);
(1009n,2018m)包含于(1009n,2m);
(1n,2018m)于(2n,1009m)有(2n,2018m)的重复项;
(1n,2018m)于(1009n,2m)有(1009n,2018m)的重复项;
(2018n,1m)有重复项(2018n,1009m),(2018n,2m),(2018n,2018m)而(2018n,2018m)包含于(2018n,2m);(2018n,1009m)于(2018n,2m)有重复项(2018n,2018m)。

#include<stdio.h>
int main()
{
	   long long a,b,c,d;
	   while(scanf("%lld%lld%lld%lld",&a,&b,&c,&d)!=EOF){
		      long long x[4],y[4];
		      x[0]=b-a+1;
		      y[0]=d-c+1;
		      x[1]=b/2-(a-1)/2;
		      y[1]=d/2-(c-1)/2;
		      x[2]=b/1009-(a-1)/1009;
		      y[2]=d/1009-(c-1)/1009;
		      x[3]=b/2018-(a-1)/2018;
		      y[3]=d/2018-(c-1)/2018;
		      long long num=0;
		      num=num+x[0]*y[3];
		      num=num+x[1]*(y[2]-y[3]);
		      num=num+x[2]*(y[1]-y[3]);
		      num=num+x[3]*y[0]-x[3]*y[1]-x[3]*y[2]+x[3]*y[3];
		      printf("%lld\n",num);
	  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值