/\n A061144.c\n* 计算Sloane的A061144序列(n X n网格上三角形面积的和)\n*\n* 由Nathaniel Johnston创建(nathaniel@nathanieljohnston.com)\n* 2011年4月29日\n*/\n\n#include <math.h>\n#include <stdio.h>\n\nunsigned char pt[256][256]; // 定义一个256 x 256的二维数组pt,用于记录网格上的点\nFILE file; // 定义一个文件指针file,用于文件操作\n\n// 计算三角形的面积\nunsigned int triangleArea(unsigned short a1, unsigned short a2, unsigned short b1, unsigned short b2, unsigned short c1, unsigned short c2)\n{\n int sd1, sd2, sd3;\n double sqsd1, sqsd2, sqsd3;\n sd1 = (b1-a1)(b1-a1) + (b2-a2)(b2-a2); sqsd1 = sqrt(sd1); // 计算a和b两点之间的距离\n sd2 = (c1-b1)(c1-b1) + (c2-b2)(c2-b2); sqsd2 = sqrt(sd2); // 计算b和c两点之间的距离\n sd3 = (a1-c1)(a1-c1) + (a2-c2)(a2-c2); sqsd3 = sqrt(sd3); // 计算c和a两点之间的距离\n\n if(sqsd1 + sqsd2 > sqsd3 && sqsd2 + sqsd3 > sqsd1 && sqsd3 + sqsd1 > sqsd2) // 判断是否为合法的三角形\n return fabs((b1-a1)(c2-a2)-(b2-a2)(c1-a1)); // 返回三角形的面积\n return 0;\n}\n\nint main ()\n{\n unsigned short a, b, c, d, a1, a2, b1, b2, maxsz, sz, sz2; // 定义一些变量\n unsigned long long numPts; // 定义一个变量用于计算点的数量\n\n printf("This tool will calculate the entries of Sloane's A061144 (sum of areas of triangles on an n X n grid). Please enter the number of terms to compute (an integer from 1 to 255): ");\n scanf("%d",&maxsz); // 读取待计算的项数\n\n numPts = 0; // 初始化点的数量为0\n\n file = fopen("b061144.txt","w"); // 打开一个文件b061144.txt,用于写入计算结果\n fprintf(file,"1 0\n"); // 将初始项写入文件\n fclose(file); // 关闭文件\n\n printf("1 0\n"); // 打印初始项\n\n for(sz=2;sz<=maxsz;sz++){ // 遍历待计算的项数\n numPts = 0; // 初始化点的数量为0\n sz2 = szsz; // 计算网格的大小\n for(a=0;a<sz2;a++){ // 遍历网格上的每个点\n a1 = a % sz; a2 = floor(a/sz); // 计算点的坐标\n for(b=a+1;b<sz2;b++){ // 遍历网格上的每个点\n b1 = b % sz; b2 = floor(b/sz); // 计算点的坐标\n for(c=b+1;c<sz2;c++){ // 遍历网格上的每个点\n numPts+=triangleArea(a1, a2, b1, b2, c % sz, floor(c/sz)); // 计算三角形的面积并累加到点的数量中\n }\n }\n }\n file = fopen("b061144.txt","a"); // 打开文件b061144.txt,用于追加写入计算结果\n fprintf(file,"%d %d\n",sz,numPts/2); // 将计算结果写入文件\n fclose(file); // 关闭文件\n printf("%d %d\n",sz,numPts/2); // 打印计算结果\n }\n\n printf("Done!"); // 打印完成提示信息\n getchar(); // 读取一个字符\n return 0; // 返回0表示程序正常结束\n

Sloane's A061144: Calculating the Sum of Triangle Areas on an n X n Grid

原文地址: https://www.cveoy.top/t/topic/qgDu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录