首页 > 代码库 > 欧拉函数

欧拉函数

欧拉函数是一个关于边点和面的公式

我先说下公式是什么在一一解释  V-E+F=2;

V这个V代表定点数(是所有线段的端点数加上交点数),E代表边数(是n段椭圆弧加上这些线段被切成的段数)F就是面数 是所有的面数

我们来看一道题

题意是:有一块椭圆形的徒弟,你可以在边界上选N个点,并两两相连得到(n(n-1))/2条线段,他们最多能把徒弟分成多少个部分?

样例输入:4

样例输出:8

用了上面的公式之后我们只需求出来E-V+2就能求出面数了

那么E怎么求,首先我们计算时都要枚举一条从固定点出发的所有对角线,假设对角线左边有i个点那么右面一定有n-i-2个点  把他们都连起来只有会产生n-2-i个交点和n-2-i个边 但是每个交点被重复计算了4次 每个线段被重复计算了2次 所以我们就可以得出公式

V = n + n/4*(i=0到i = n - 2的所有点数相加)

E = n + n/2*(i = 0到i = n -2的所有边相加)

思路这么明确  代码我就不写了

欧拉函数