正三十边形的对角线可将其为多少部分

博客探讨了正三十边形的对角线如何将其分割成多个区域的问题,经过计算得出共有21480个区域。
摘要由CSDN通过智能技术生成

From http://218.1.231.240/iqbbs/dispbbs.asp?boardid=16&id=152836

最后计算出来是21480个区域。

 

 

 

首先计算交点数目:计算结果为16801个交点

假设Z=exp(Pi/15*i)=cos(Pi/15)+i*sin(Pi/15)

那么Z^15=-1, Z^30=1.点1,Z,Z^2,...,Z^29在复平面上构成正30边形。

而Z的极小多项式是1+Z-Z^3-Z^4-Z^5+Z^7+Z^8。

也就是上面表达是关于Z是0,而任意次数低于8的有理系数多项式,不可能在Z这点取0。(不包括0多项式)

这个多边形所有顶点都是Q[Z]中的点(也就是所有有理系数多项式将Z代入后可能的取值),所以它们对角线的交点

也会在Q[Z]中。现在我的算法就是将每个对角线的交点用关于Z的次数低于8的有理多项式表示出来,这种表示方法必然是唯一的。如果两个交点它们的多项式相同,那么就是同一个点,不然不同。

 
 

第一个程序,计算所有的交点,并输出,输出格式是每行都是

 

a,b,c,d,e,f,g,h[i,j,s,t]

 

其中前面8个数表示这个交点是
a+bZ+cZ^2+dZ^3+eZ^4+fZ^5+gZ^6+hZ^7

 

后面四个数表示这个点是直线Z^i Z^j 和 直线Z^s Z^t的交点。

 

#include <stdio.h>
#include <process.h>
__int64 factor(__int64 a,__int64 b){
if(b==0)return a;
else return factor(b,a%b);
}

 

class Q{
__int64 _up;
__int64 _down;
void Normalize(){
__int64 fac=factor(_up,_down);
_down/=fac;
_up/=fac;
if(_down<0){
_down=-_down;
_up=-_up;
}
}
public:
Q():_up(0),_down(1){}
Q(__int64 up,__int64 down):_up(up),_down(down){}
Q(__int64 x):_up(x),_down(1){}
Q& operator+=(const Q& x);
Q& operator-=(const Q& x);
Q& operator*=(const Q& x);
Q& operator/=(const Q& x);
Q operator-()const{Q tmp=*this;tmp._up=-_up;retur

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值