WY27. 优雅的点
描述
小易有一个圆心在坐标原点的圆,小易知道圆的半径的平方。小易认为在圆上的点而且横纵坐标都是整数的点是优雅的,小易现在想寻找一个算法计算出优雅的点的个数,请你来帮帮他。输入描述
输入为一个整数,即为圆半径的平方,范围在32位int范围内。输出描述
输出为一个整数,即为优雅的点的个数示例1
输入:
25
输出:
12
C 解法, 执行用时: 2ms, 内存消耗: 236KB, 提交时间: 2018-09-17
#include <stdio.h> #include <math.h> int elegent(int r){ int max=sqrt(r); int x=0,num=0; double y=0; for(x=0;x<=max;x++){ y=sqrt(r-x*x); if(y==(int)y) num++; } if(fmod(sqrt(r),1.0) == 0) return 4*(num-1); else return 4*num; } int main(){ int r; scanf("%d",&r); printf("%d",elegent(r)); }
C 解法, 执行用时: 2ms, 内存消耗: 328KB, 提交时间: 2018-11-28
#include <stdio.h> #include <math.h> int r2; int main(int argc, char *argv[]) { int r, i, j, k; float f1, f2; long int ans = 0; scanf("%d", &r2); r = sqrt(r2); f1 = sqrt(r2) - r; for(i = 1; i <= r; i++) { j = r2 - i * i; if(j == 0) { break; } k = sqrt(j); f2 = sqrt(j) - k; if(f2 == 0.0) { ans++; } } ans = ans * 4; if(f1 == 0.0) { ans += 4; } //printf("%d\n", r); //printf("%f\n", dec); printf("%ld\n", ans); return 0; }