用PASCAL 计算交点数(jd.pas/in/out)用PASCAL计算交点数(jd.pas/in/out)平面上有n条直线,且无三线共点,问这些直线能有多少种不同交点数输入:n(nprogram noi2;var n,m,t,i:integer;h:array[1..10000] of double ;temp,hea
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/17 09:48:59
用PASCAL 计算交点数(jd.pas/in/out)用PASCAL计算交点数(jd.pas/in/out)平面上有n条直线,且无三线共点,问这些直线能有多少种不同交点数输入:n(nprogram noi2;var n,m,t,i:integer;h:array[1..10000] of double ;temp,hea
用PASCAL 计算交点数(jd.pas/in/out)
用PASCAL
计算交点数(jd.pas/in/out)
平面上有n条直线,且无三线共点,问这些直线能有多少种不同交点数
输入:n(n
program noi2;
var n,m,t,i:integer;
h:array[1..10000] of double ;
temp,head,tail,mid,v:double;
begin
readln(n,m,v);
t:=n*m;
for i:=1 to t do (1)
head:=0;
(2)
while (3) do
begin
(4)
temp:=0;
for i:=1 to t do
if (h[i]
用PASCAL 计算交点数(jd.pas/in/out)用PASCAL计算交点数(jd.pas/in/out)平面上有n条直线,且无三线共点,问这些直线能有多少种不同交点数输入:n(nprogram noi2;var n,m,t,i:integer;h:array[1..10000] of double ;temp,hea
似乎没那么难.没有测试数据也不知道对不对.
var m,n,i,j:longint;
begin
assign(input,'jd.in'); reset(input);
assign(output,'jd.out'); rewrite(output);
readln(n);
m:=(n*(n-1)) div 2;
writeln('0');
for i:=n-1 to m do
writeln(i);
close(input);
close(output);
end.
贴个算法吧...程序不太想编了...
首先~
可以把n分解成几个正整数加和的形式~
比如n=4时
有
4=4=1+3=2+2=1+1+2=1+1+1+1
那么我们可以说有几个加数就有几类倾斜角~
而我们很容易知道,倾斜角不同的直线必有一个交点,而倾斜角相同的直线不相交~
这样就可以通过分解出的加和形式来算交点数了~
比如~1+...
全部展开
贴个算法吧...程序不太想编了...
首先~
可以把n分解成几个正整数加和的形式~
比如n=4时
有
4=4=1+3=2+2=1+1+2=1+1+1+1
那么我们可以说有几个加数就有几类倾斜角~
而我们很容易知道,倾斜角不同的直线必有一个交点,而倾斜角相同的直线不相交~
这样就可以通过分解出的加和形式来算交点数了~
比如~1+1+2,交点数为1*1+1*2+1*2=5
再比如2+2+3+3+5交点数为2*2+2*3+2*3+2*5+2*3+2*3+2*5+3*3+3*5+3*5
这样就可以编程了吧~~
收起