三个圆两两相切(切点不一样),三个圆同时和一条直线相切,问有多少组解.

根据笛卡尔定理,有:

改写一下:

所以如果 $r_C$ 是一个有理数则 $r_Ar_B$ 必须是平方数.
设 $r_A=ta^2,r_B=tb^2,a\le b,\gcd(a,b)=1,t>0$ ,所以我们有三元组

可以得到 $(a+b)^2|t$ .
那么重新令 $r_A=dp^2(p+q)^2,r_B=dq^2(p+q)^2,r_C=dp^2q^2$ ,这就是一对解,枚举互质的 $(p,q)$ ,然后枚举 $d$ 即可.

如何枚举(p,q)?
法雷树上进行枚举.