第一次接触欧拉公式的应用。。。学习了。。
设正多面体的每个面是正n边行,每个顶点是m条棱,于是,棱数E应是F(面数)与n的积的一半,即 Nf=2E -------------- 1式 同时,E应是V(顶点数)与M的积的一半,即 mV=2E -------------- 2式 由1式、2式,得 F=2E/n, V=2E/m, 代入欧拉公式 V+F-E=2, 有 2E/m+2E/n-E=2 整理后,得1/m+1/n=1/2+1/E. 由于E是正整数,所以1/E>0。因此 1/m+1/n>1/2 -------------- 3式 3式说明m,n不能同是大于3,否则3式不成立。另一方面,由于m和n的意义(正多面体一个顶点处的棱数与多边形的边数)知,m>=3且n>=3。因此m和n至少有一个等于3 当m=3时,因为1/n>1/2-1/3=1/6,n又是正整数,所以n只能是3,4,5 同理n=3,m也只能是3,4,5 所以 n m 类型 3 3 正四面体 4 3 正六面体 3 4 正八面体 5 3 正十二面体 3 5 正二十面体 由于上述5种多面体确实可以用几何方法作出,而不可能有其他种类的正多面体 所以正多面体只有5种
再附个matrix67的博文吧 http://www.matrix67.com/blog/archives/6161#include<cstdio> using namespace std; int main() { int m,n; while(scanf("%d %d",&m,&n)!=EOF) { if(m==3&&n==4||m==4&&n==6||m==3&&n==8||m==5&&n==12||m==3&&n==20) printf("Yes\n"); else printf("No\n"); } return 0; }