BZOJ 2659[Beijing wc2012]算不出的算式

题面:

2659: [Beijing wc2012]算不出的算式

Time Limit: 3 Sec  Memory Limit: 128 MB
Submit: 1421  Solved: 839
[Submit][Status][Discuss]

Description

算不出的算式
背景:
曾经有一个老掉牙的游戏放在我面前,我没有珍惜。直到这个游戏停产才追悔莫及。人世间最痛苦的事情莫过于此,如果上天给我一个再玩一次的机会,我一定要,通关!
题目描述:
如果你真的很想玩这个游戏,那么就先看看我的题目吧,搞不定这些的话是没办法通关的哟。第一关其实很简单,只有一个关闭的有密码锁的大门。这大门上写着一个奇怪的算式$\sum_{i=1}^{\frac{p-1}{2}}\lfloor\frac{iq}{p}\rfloor+\sum_{j=1}^{\frac{q-1}{2}}\lfloor\frac{jp}{q}\rfloor$,估计是要你利用它算出密码来开门吧(果然是老掉牙的情节)。
传说中这个式子中的p和q是两个奇质数,等号右边算出来应该就是密码了吧,你是真的算不出来么?

Input

只有一行,两个奇质数,分别表示p,q。

Output

一个数,表示算式结果。

Sample Input

5 7

Sample Output

6

HINT

HINT:p,q在32位整型范围内。

发现$\frac{p}{q}$是斜率的形式,$\sum_{i=1}^{\frac{p-1}{2}}\lfloor\frac{iq}{p}\rfloor$是直线上方整点的数量,

$\sum_{j=1}^{\frac{q-1}{2}}\lfloor\frac{jp}{q}\rfloor$是直线下方整点的数量(注意p=q的情况)。

 1 #include <stdio.h>
 2 using namespace std;
 3 #define LL long long
 4 inline LL read()
 5 {
 6     LL s=0,f=1; char ch=getchar();
 7     while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1; ch=getchar();}
 8     while(ch>=‘0‘&&ch<=‘9‘) s=s*10+ch-‘0‘,ch=getchar();
 9     return s*f;
10 }
11 int main()
12 {
13     LL p,q;
14     p=read();
15     q=read();
16     printf("%lld",p==q?((p-1)>>1)*((q+1)>>1):((p-1)>>1)*((q-1)>>1));
17 }

BZOJ 2659

时间: 2024-10-12 19:31:50

BZOJ 2659[Beijing wc2012]算不出的算式的相关文章

2659: [Beijing wc2012]算不出的算式

2659: [Beijing wc2012]算不出的算式 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 757  Solved: 425[Submit][Status] Description 算不出的算式背景:              曾经有一个老掉牙的游戏放在我面前,我没有珍惜.直到这个游戏停产才追悔莫及.人世间最痛苦的事情莫过于此,如果上天给我一个再玩一次的机会,我一定要,通关!题目描述:       如果你真的很想玩这个游戏,那么就先看看

【BZOJ 2659】 [Beijing wc2012]算不出的算式

2659: [Beijing wc2012]算不出的算式 Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 786  Solved: 444 [Submit][Status] Description 算不出的算式 背景: 曾经有一个老掉牙的游戏放在我面前,我没有珍惜.直到这个游戏停产才追悔莫及.人世间最痛苦的事情莫过于此,如果上天给我一个再玩一次的机会,我一定要,通关! 题目描述: 如果你真的很想玩这个游戏,那么就先看看我的题目吧,搞不定这些的话是没

BZOJ2659: [Beijing wc2012]算不出的算式

2659: [Beijing wc2012]算不出的算式 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 668  Solved: 366[Submit][Status] Description 算不出的算式背景:              曾经有一个老掉牙的游戏放在我面前,我没有珍惜.直到这个游戏停产才追悔莫及.人世间最痛苦的事情莫过于此,如果上天给我一个再玩一次的机会,我一定要,通关!题目描述:       如果你真的很想玩这个游戏,那么就先看看

[Beijing wc2012]算不出的算式

OJ题号:BZOJ2659 思路:数学. 建立平面直角坐标系.在第一象限作直线y=qx/p,易得Σ[kq/p]即为当x<(p/2)时,直线下方(包括直线)的整点数:Σ[kp/q]为当y<(q/2)时,直线上方(包括直线)的整点数.因此答案即为(p-1)*(q-1)/4.注意当p==q时,要将直线上的点算两遍. 1 #include<cstdio> 2 int main() { 3 long long p,q; 4 scanf("%lld%lld",&p,

BZOJ 2662: [BeiJing wc2012]冻结(最短路)

这道题和 BZOJ 2763飞行路线 几乎一模一样..然后飞行路线我是1A,这道题WA了4次,我开始怀疑我的智商了.. -------------------------------------------------------------------- #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<queue> #inclu

bzoj 2660: [Beijing wc2012]最多的方案【dp】

有点神奇的dp 首先注意到任意一个数都能被表示成若干个斐波那契数的和的形式 先求出n可以字典序最大的表示 设f[i][0/1]表示第i个斐波那契数选或者不选 如果当前数不选,那就选比他小的两个数,否则,需要不选比他小的两个数(连续的影响) #include<iostream> #include<cstdio> using namespace std; const int N=105; long long n,a[N],s[N],top,f[N][2]; int main() { s

bzoj 2661: [BeiJing wc2012]连连看

1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<cmath> 5 #include<algorithm> 6 #define M 10000 7 #define inf 2139062143 8 using namespace std; 9 int cnt=1,n,m,T,d[M],q[2*M],f[M],head[M],next[10*M],u[10*

分层图最短路(DP思想) BZOJ2662 [BeiJing wc2012]冻结

2662: [BeiJing wc2012]冻结 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 999  Solved: 535[Submit][Status][Discuss] Description "我要成为魔法少女!" "那么,以灵魂为代价,你希望得到什么?" "我要将有关魔法和奇迹的一切,封印于卡片之中??" 在这个愿望被实现以后的世界里,人们享受着魔法卡片(SpellCard,又名符 卡

【BZOJ2661】[BeiJing wc2012]连连看 最大费用流

[BZOJ2661][BeiJing wc2012]连连看 Description 凡是考智商的题里面总会有这么一种消除游戏.不过现在面对的这关连连看可不是QQ游戏里那种考眼力的游戏.我们的规则是,给出一个闭区间[a,b]中的全部整数,如果其中某两个数x,y(设x>y)的平方差x2-y2是一个完全平方数z2,并且y与z互质,那么就可以将x和y连起来并且将它们一起消除,同时得到x+y点分数.那么过关的要求就是,消除的数对尽可能多的前提下,得到足够的分数.快动手动笔算一算吧. Input 只有一行,