码迷,mamicode.com
首页 > 其他好文 > 详细

luoguP4132 [BJOI2012]算不出的等式 数论

时间:2018-11-02 02:00:07      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:老师   size   hide   htm   dao   pen   lap   mem   质数   

传送门

以前的题

当时集训的时候老师连着笑话一起讲的

这题自己先找规律打表就猜是(p-1)*(q-1)/4

没有∑套∑ 先把式子分成两个(其实是一样的)

然后考虑这个式子求和前的每一项 

对于每一个k求的都是y=q/p*x下的整点数

然后另一边就是互补的一侧

(该式两部分分别是一个([p/2],[q/2])方格图主对角线分成的两部分的整点数.)[]表示下取整

技术分享图片

图大概长这样

由于p,q是质数 所以只有相等的时候会有p个点会少算(边界)

Code:

技术分享图片
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<queue>
 5 #define ms(a,b) memset(a,b,sizeof a)
 6 #define rep(i,a,n) for(int i = a;i <= n;i++)
 7 #define per(i,n,a) for(int i = n;i >= a;i--)
 8 #define inf 1000000007
 9 using namespace std;
10 typedef long long ll;
11 typedef double D;
12 #define eps 1e-8
13 ll read() {
14     ll as = 0,fu = 1;
15     char c = getchar();
16     while(c < 0 || c > 9) {
17         if(c == -) fu = -1;
18         c = getchar();
19     }
20     while(c >= 0 && c <= 9) {
21         as = as * 10 + c - 0;
22         c = getchar();
23     }
24     return as * fu;
25 }
26 //head
27 ll p,q,ans;
28 int main() {
29     p = read(),q = read();
30     ans = (p>>1)*(q>>1);
31     if(p == q) ans += p>>1;
32     printf("%lld\n",ans);
33     return 0;
34 }
View Code

 

luoguP4132 [BJOI2012]算不出的等式 数论

标签:老师   size   hide   htm   dao   pen   lap   mem   质数   

原文地址:https://www.cnblogs.com/yuyanjiaB/p/9893516.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!