1. 切割线定理:
若PT 与 圆相切,则 PT^2 = PB*PA
证明:连接AT, BT
∵ ∠PTB=∠PAT(弦切角定理);∠APT=∠TPB(公共角);
∴ △PBT∽△PTA(两角对应相等,两三角形相似);
∴PB:PT=PT:AP;
即:PT²=PB·PA
2. 割线长定理:
AP·BP=CP·DP
证明:
∵∠A和∠C都对弧BD
∴由圆周角定理,得 ∠DAP=∠BCP
又∵∠P=∠P,∴△ADP∽△CBP
∴AP:CP=DP:BP
即AP·BP=CP·DP
3. 题目地址~~
AC代码:
#include <cmath>#include <cstdio>#include <iostream>using namespace std;typedef long long ll;int main(){ ll xa,ya,xr,r,n; int t;cin>>t; while(t–) { cin>>xa>>ya>>xr>>r>>n; ll y0,c; ll tep = (xa-xr)*(xa-xr)-r*r; double tt = sqrt(tep*1.0); double yy = xa*r*1.0/tt; double y1 = ya-yy; double y2 = ya+yy; ll ans = 0; while(n–) { cin>>y0>>c; if(y0*1.0>=y1&&y0*1.0<=y2) ans += max(0LL,c-tep); else ans += c; } cout<<ans<<endl; } return 0;}