[題解](函數下整點個數?)luogu_P4132_BZOJ_2659_算不出的等式

兩個都是一次函數,下取整就是整點個數,兩個函數k剛好成倒數,所以最後發現會組合成一個矩形

(為啥要考慮重複與否的問題???)

然而這樣會不會重複計算點數呢 我們發現因為取的是圖像下的整數點 所以要想重複算必須有整點的交集

然而pq互質,函數值不會有整數,把兩個函數圖像旋轉拼合以後可以發現不會重複算

但是當p和q相等的時候就會有交集了,這樣把對角線上重複算的去掉,

((p-1)/2)((p-1)/2)是矩形中的点数,后面是重复的点(有((p-1)/2)((p-1)/2)个点就有(p-1)/2)个点在对角线上,拼起来会重合)

提出(p-1)/2就是(p2p^2p2−1)/4,p为奇数,平方减一是偶数除以4与本身除以4同效(整数会自动舍弃小数位)

#include<iostream>
#include<cstdio>
using namespace std;
long long p,q;
int main(){
    scanf("%lld%lld",&p,&q);
    if(p!=q)printf("%lld",((p-1)/2)*((q-1)/2));
    else printf("%lld",p*q/4);
}

猜你喜欢

转载自www.cnblogs.com/superminivan/p/10864465.html
今日推荐