Lucky7(hdu5768)
Lucky7
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 328 Accepted Submission(s): 130
?? once wrote an autobiography, which mentioned something about himself. In his book, it said seven is his favorite number and he thinks that a number can be divisible by seven can bring him good luck. On the other hand, ?? abhors some other prime numbers and thinks a number x divided by pi which is one of these prime numbers with a given remainder ai will bring him bad luck. In this case, many of his lucky numbers are sullied because they can be divisible by 7 and also has a remainder of ai when it is divided by the prime number pi.
Now give you a pair of x and y, and N pairs of ai and pi, please find out how many numbers between x and y can bring ?? good luck.
Each test case starts with three integers three intergers n, x, y(0<=n<=15,0<x<y<1018) on a line where n is the number of pirmes.
Following on n lines each contains two integers pi, ai where pi is the pirme and ?? abhors the numbers have a remainder of ai when they are divided by pi.
It is guranteed that all the pi are distinct and pi!=7.
It is also guaranteed that p1*p2*…*pn<=1018 and 0<ai<pi<=105for every i∈(1…n).
2 1 100
3 2
5 3
0 1 100
Case #2: 14
For Case 1: 7,21,42,49,70,84,91 are the seven numbers.
For Case2: 7,14,21,28,35,42,49,56,63,70,77,84,91,98 are the fourteen numbers.
1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<string.h>
5 #include<queue>
6 #include<stdlib.h>
7 #include<iostream>
8 #include<vector>
9 #include<map>
10 #include<set>
11 #include<math.h>
12 using namespace std;
13 typedef long long LL;
14 typedef struct pp
15 {
16 LL x;
17 LL y;
18 } ss;
19 ss ans[20];
20 LL quick(LL n,LL m,LL mod);
21 LL mul(LL n, LL m,LL p);
22 pair<LL,LL>P(LL n,LL m);
23 LL gcd(LL n, LL m);
24 LL mm[20];
25 int main(void)
26 {
27 int i,j,k;
28 scanf("%d",&k);
29 int __ca=0;
30 LL n,x,y;
31 while(k--)
32 {
33 __ca++;
34 scanf("%lld %lld %lld",&n,&x,&y);
35 LL sum;
36 sum=y/7-(x-1)/7;
37 printf("Case #%d: ",__ca);
38 if(n==0)
39 {
40 printf("%lld\n",sum);
41 }
42 else
43 {
44 LL mod=1;
45 for(i=0; i<n; i++)
46 {
47 scanf("%lld %lld",&ans[i].x,&ans[i].y);
48 }
49 LL anw=0;
50 int s;
51 for(j=1; j<(1<<n); j++)
52 {
53 int cr=0;
54 for(s=0; s<n; s++)
55 {
56 if(j&(1<<s))
57 {
58 mm[cr++]=s;
59 }
60 }
61 LL mod=1;
62 LL acm=0;
63 for(i=0; i<cr; i++)
64 {
65 mod*=ans[mm[i]].x;
66 }
67 for(i=0; i<cr; i++)
68 {
69 LL mod1=mod/ans[mm[i]].x;
70 LL ni=quick(mod1,ans[mm[i]].x-2,ans[mm[i]].x);
71 acm=(acm+mul(mul(mod1,ni,mod),ans[mm[i]].y,mod))%mod;
72 }
73 anw=acm;
74 LL ctx=0;
75 if(anw>y)
76 {
77 continue;
78 }
79 else
80 {
81 LL cha=x-anw;
82 LL nx,ny;
83 LL cha1=y-anw;
84 nx=cha/mod;
85 while(anw+mod*nx<x)
86 {
87 nx++;
88 } if(cha<0)nx=0;
89 ny=cha1/mod;
90 {
91 pair<LL ,LL>AK=P(mod,7);
92 LL nxx=(AK.first*acm%7+7)%7;
93 nxx=((-nxx)%7+7)%7;
94 if(ny>=nxx)
95 {
96 LL cx=max(nx-nxx,(LL)0);
97 LL cy=ny-nxx;
98 if(cx==0)ctx=cy/7+1;else {ctx=cy/7-(cx-1)/7;}
99 }
100 }
101 }
102 if(cr%2)
103 {
104 sum-=ctx;
105 }
106 else sum+=ctx;
107 } printf("%lld\n",sum);
108 }
109 }
110 return 0;
111 }
112 LL gcd(LL n, LL m)
113 {
114 if(m==0)
115 {
116 return n;
117 }
118 else if(n%m==0)
119 {
120 return m;
121 }
122 else
123 {
124 return gcd(m,n%m);
125 }
126 }
127 LL quick(LL n,LL m,LL mod)
128 {
129 LL cnt=1;n%=mod;
130 while(m)
131 {
132 if(m&1)
133 {
134 cnt=cnt*n%mod;
135 }
136 n=n*n%mod;
137 m/=2;
138 }
139 return cnt;
140 }
141 LL mul(LL n, LL m,LL p)
142 {
143 n%=p;
144 m%=p;
145 LL ret=0;
146 while(m)
147 {
148 if(m&1)
149 {
150 ret=ret+n;
151 ret%=p;
152 }
153 m>>=1;
154 n<<=1;
155 n%=p;
156 }
157 return ret;
158 }
159 pair<LL,LL>P(LL n,LL m)
160 {
161 if(m==0)
162 {
163 pair<LL,LL>ak;
164 ak=make_pair(1,0);
165 return ak;
166 }
167 else
168 {
169 pair<LL,LL>A=P(m,n%m);
170 LL nx=A.second;
171 LL ny=A.first;
172 ny=ny-(n/m)*nx;
173 A.first=nx;
174 A.second=ny;
175 return A;
176 }
177 }
1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<string.h>
5 #include<queue>
6 #include<stdlib.h>
7 #include<iostream>
8 #include<vector>
9 #include<map>
10 #include<set>
11 #include<math.h>
12 using namespace std;
13 typedef long long LL;
14 typedef struct pp
15 {
16 LL x;
17 LL y;
18 } ss;
19 ss ans[20];
20 LL quick(LL n,LL m,LL mod);
21 LL mul(LL n, LL m,LL p);
22 pair<LL,LL>P(LL n,LL m);
23 LL gcd(LL n, LL m);
24 LL mm[20];
25 int main(void)
26 {
27 int i,j,k;
28 scanf("%d",&k);
29 int __ca=0;
30 LL n,x,y;
31 while(k--)
32 {
33 __ca++;
34 scanf("%lld %lld %lld",&n,&x,&y);
35 LL sum;
36 sum=y/7-(x-1)/7;
37 if(n==0)
38 {
39 printf("Case #%d: %lld\n",__ca,sum);
40 }
41 else
42 {
43 LL mod=1;
44 for(i=0; i<n; i++)
45 {
46 scanf("%lld %lld",&ans[i].x,&ans[i].y);
47 }
48 LL anw=0;
49 LL s;
50 for(j=1; j<(1<<n); j++)
51 { LL mod=1;
52 int cr=0;
53 for(s=0; s<n; s++)
54 {
55 if(j&(1<<s))
56 {
57 mm[cr++]=s;
58 mod*=ans[s].x;
59 }
60 }mod*=7;
61 LL acm=0;
62 for(i=0; i<cr; i++)
63 {
64 LL mod1=mod/ans[mm[i]].x;
65 LL ni=quick(mod1,ans[mm[i]].x-2,ans[mm[i]].x);
66 acm=(acm+mul(mul(mod1,ni,mod),ans[mm[i]].y,mod))%mod;
67 }
68 acm%=mod;
69 acm+=mod;
70 acm%=mod;
71 anw=acm;
72 LL ctx=0;
73 if(anw>y)
74 {
75 continue;
76 }
77 else
78 {
79 if(anw<x)
80 {
81 LL ax=x-anw-1;
82 LL ay=y-anw;
83 ctx+=ay/mod-ax/mod;
84 }
85 else if(anw>=x)
86 { LL ay=y-anw;
87 ctx+=ay/mod+1;
88 }
89 }
90 if(cr%2)
91 {
92 sum-=ctx;
93 }
94 else sum+=ctx;
95 } printf("Case #%d: %lld\n",__ca,sum);
96 }
97 }
98 return 0;
99 }
100 LL gcd(LL n, LL m)
101 {
102 if(m==0)
103 {
104 return n;
105 }
106 else if(n%m==0)
107 {
108 return m;
109 }
110 else
111 {
112 return gcd(m,n%m);
113 }
114 }
115 LL quick(LL n,LL m,LL mod)
116 {
117 LL cnt=1;n%=mod;
118 while(m>0)
119 {
120 if(m&1)
121 {
122 cnt=cnt*n%mod;
123 }
124 n=n*n%mod;
125 m/=2;
126 }
127 return cnt;
128 }
129 LL mul(LL n, LL m,LL p)
130 {
131 n%=p;
132 m%=p;
133 LL ret=0;
134 while(m)
135 {
136 if(m&1)
137 {
138 ret=ret+n;
139 ret%=p;
140 }
141 m>>=1;
142 n<<=1;
143 n%=p;
144 }
145 return ret;
146 }
147 pair<LL,LL>P(LL n,LL m)
148 {
149 if(m==0)
150 {
151 pair<LL,LL>ak;
152 ak=make_pair(1,0);
153 return ak;
154 }
155 else
156 {
157 pair<LL,LL>A=P(m,n%m);
158 LL nx=A.second;
159 LL ny=A.first;
160 ny=ny-(n/m)*nx;
161 A.first=nx;
162 A.second=ny;
163 return A;
164 }
165 }
Lucky7(hdu5768)的更多相关文章
- hdu-5768 Lucky7(容斥定理+中国剩余定理)
题目链接: Lucky7 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Pr ...
- HDU 5768:Lucky7(中国剩余定理 + 容斥原理)
http://acm.hdu.edu.cn/showproblem.php?pid=5768 Lucky7 Problem Description When ?? was born, seven ...
- HDU 5768 Lucky7 (中国剩余定理 + 容斥 + 快速乘法)
Lucky7 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5768 Description When ?? was born, seven crow ...
- hdu 5768 Lucky7 容斥
Lucky7 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5768 Description When ?? was born, seven crow ...
- hdu 5768 Lucky7 中国剩余定理+容斥+快速乘
Lucky7 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem D ...
- ACM/ICPC 之 中国剩余定理+容斥原理(HDU5768)
二进制枚举+容斥原理+中国剩余定理 #include<iostream> #include<cstring> #include<cstdio> #include&l ...
- HDU 5768 Lucky7 容斥原理+中国剩余定理(互质)
分析: 因为满足任意一组pi和ai,即可使一个“幸运数”被“污染”,我们可以想到通过容斥来处理这个问题.当我们选定了一系列pi和ai后,题意转化为求[x,y]中被7整除余0,且被这一系列pi除余ai的 ...
- HDU 5768 Lucky7 (中国剩余定理+容斥)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5768 给你n个同余方程组,然后给你l,r,问你l,r中有多少数%7=0且%ai != bi. 比较明显 ...
- 【中国剩余定理】【容斥原理】【快速乘法】【数论】HDU 5768 Lucky7
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5768 题目大意: T组数据,求L~R中满足:1.是7的倍数,2.对n个素数有 %pi!=ai 的数 ...
随机推荐
- lxml解析库的安装和使用
一.lxml的安装lxml是Python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高.本节中,我们了解一下lxml的安装方式,这主要从Windows.Linux ...
- Vue框架,computed和watch的区别
computed和watch定义 1.computed是计算属性,类似于过滤器,对绑定到视图的数据进行处理.官网的例子: <div id="example"> < ...
- MySQL学习(一)——创建新用户、数据库、授权
一.创建用户 1.登录mysql mysql -u root -p 2.创建本地用户>/font> use mysql; //选择mysql数据库 create user 'test'@' ...
- python 从ubantu环境迁移到windows环境
下载安装Anaconda3 Anaconda3-2021.05-Windows-x86_64.exe 默认安装目录 C:\ProgramData\Anaconda3 可以启动Anaconda查看不同的 ...
- go 代理
环境变量中设置 #GO111MODULE=auto GOPROXY=https://goproxy.io 如果不第一次,则在命令行设置 go env -w GO111MODULE=on go env ...
- MVC+Servlet+mysql+jsp读取数据库信息
首先有以下几个包: 1.controller 控制层,对用户的请求进行响应 2.dao 数据层接口标准 3.daoimpl 数据层实现层 4.model 实体类层 5.service 业务层接口标准 ...
- ANTLR 简介
<ANTLR 4权威指南>由机械工业出版社出版,有兴趣的读者推荐购买阅读. 本专题大多内容来源于我读<ANTLR 4权威指南>的随手笔记以及个人实践,仅供参考学习,请勿用于任何 ...
- CF190C STL 题解
* 题意 :给出只会出现 pair 和 int 的字符串 , 要求按照给出 pair 和 int 的顺序 , 添加 ' < ' , ' > ' , ' , ' 这三个符号 , ...
- Nginx配置缓存
目录 一.简介 二.配置 三.其它参数 忽略Cache-Control头部 缓存post请求 缓存动态内容 使用Cookie作为缓存键的一部分 手动清理缓存 支持断点续传 设置查看缓存命中与否 一.简 ...
- Python的安装和卸载
一.Python的安装,去Python官网https://www.python.org/downloads/下载对应安装包 进入官网后鼠标移动到downloads处然后点击Windows 二.安装包下 ...