作业帮 > 综合 > 作业

pascal题目的思路和源程序

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/08 17:22:54
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
第一题暴力判断两两之间交点,然后将这些交点排序,排完序判重(很坐标差的平方与纵坐标差的平方加起来是否小于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~
如果还要源程序就问我要,但劝你自己码一遍,我可以帮你改
再问: 非常感谢你的回答,但是我也做过了还是有很多错,希望能把源程序拿过来给我看一下,我现在又有很多题目要做,希望能够给我参考一下,谢谢!
再答: 自己编的
打扰我看论文,就以2点财富值意思意思吧文件自己加,在主程序begin后assign(input,'文件名');assign(output,'文件名');reset(input);rewrite(output);在最后一行end前close(input);close(output);