pascal题目的思路和源程序火力交汇点[题目描述]给定n 条直线,直线的方程为:y=kx+b .求这些直线之间共有多少个不同的交点.[输入格式]nk1 b1k2 b2.kn bn第一行一个数n,表示直线数量接下来n 行,每
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/27 17:12:32
pascal题目的思路和源程序火力交汇点[题目描述]给定n 条直线,直线的方程为:y=kx+b .求这些直线之间共有多少个不同的交点.[输入格式]nk1 b1k2 b2.kn bn第一行一个数n,表示直线数量接下来n 行,每
pascal题目的思路和源程序
火力交汇点
[题目描述]
给定n 条直线,直线的方程为:y=kx+b .求这些直线之间共有多少个不同的交点.
[输入格式]
n
k1 b1
k2 b2
.
kn bn
第一行一个数n,表示直线数量
接下来n 行,每行描述一条直线
[输出格式]
一个数,交点的个数
若交点不存在请输出No Fire Point.(结尾有小点哦)
[样例输入]
2
1 0
-1 2
[样例输出]
1
[数据规模]
对所有数据k,b
pascal题目的思路和源程序火力交汇点[题目描述]给定n 条直线,直线的方程为:y=kx+b .求这些直线之间共有多少个不同的交点.[输入格式]nk1 b1k2 b2.kn bn第一行一个数n,表示直线数量接下来n 行,每
第一题暴力判断两两之间交点,然后将这些交点排序,排完序判重(很坐标差的平方与纵坐标差的平方加起来是否小于0.00001)就行了
第二题(a+b)^n,用二项式定理,第k项为 c(k,n)*a^k*b^(n-k)就行了
前两题没啥难的,这也不会就练练编程能力,排序、指针是第一题要点,指针不想编可以用多个数组代替;第二题纯粹模拟,有兴趣可以看看快速幂(你以后会用到,但这题用不到)
第三题一个数,转换成2进制,mod8192后,那些14位(2^14=8192)以上的位没用,因此实际有用的数不超过8192(重复的数不如不取).
那么n只有8192,用dp[i]表示到i最少用几个数,dp[0]=0,其他dp[i]=100000000;然后用之前那不超过8192个数来更新dp[i],实际复杂度o(8192^2),用队列优化更快(没必要)
ak~
如果还要源程序就问我要,但劝你自己码一遍,我可以帮你改