x+y
=q,
令它和座標軸在第一象限圍成了乙個三角形,然後畫線連線了座標原點和線段上座標為整數的格點.
請你找一找有多少點在三角形的內部且不是線段上的點,並將這個數對p取模後告訴他.
輸入p和q。q是質數且q≤
1018
,1≤p
≤1018
分析:
答案的公式是an
s=(q
−2)∗
(q−1
)/2 ;
但是因為p和q的範圍太大!直接乘的話會爆long long!!!
所以需要手動寫快速乘法,類似於快速冪的寫法!!!
#include
#include
#include
#include
#include
#include
using
namespace
std;
int t;
long
long q,p;
long
long mul(long
long a,long
long b)
return res;
}int main()
long
long t=(q-1)/2%p;
long
long ans=mul(q-2,t);
cout
0;}