BZOJ系列2659《[Beijing wc2012]算不出的算式》題解

Description

算不出的算式
背景:
              曾經有一個老掉牙的遊戲放在我面前,我沒有珍惜。直到這個遊戲停產才追悔莫及。人世間最痛苦的事情莫過於此,如果上天給我一個再玩一次的機會,我一定要,通關!
題目描述:
       如果你真的很想玩這個遊戲,那麼就先看看我的題目吧,搞不定這些的話是沒辦法通關的喲。第一關其實很簡單,只有一個關閉的有密碼鎖的大門。這大門上寫着一個奇怪的算式,估計是要你利用它算出密碼來開門吧(果然是老掉牙的情節)。
       傳說中這個式子中的p和q是兩個奇質數,等號右邊算出來應該就是密碼了吧,你是真的算不出來麼?

Input

只有一行,兩個奇質數,分別表示p,q。

Output

       一個數,表示算式結果。

Sample Input

5 7

Sample Output

6

HINT



HINT:p,q在32位整型範圍內。


數學題:

畫出個座標系,標出(p,q),從(0,0)到(p,q)連一條線,畫出長方形,直線斜率是p/q。

Σ[kp/q]是直線下方的整點數,Σ[kq/p]是直線上方的整點數,

計算p==q時要考慮直線上有整點的情況。

代碼如下:

#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
typedef long long ll;
ll p,q,sum;
int main()
{
	scanf("%lld%lld",&p,&q);
	if(p==q) printf("%lld\n",p*q/4);
	else printf("%lld\n",(p-1)*(q-1)/4);
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章