我正在尝试解决编程竞赛系统中的一些问题并解决2点距离问题,我不明白为什么我的代码在所有提交的1181º中排名.
我怎么能比我的代码更快?
#include <stdio.h>
#include <math.h>
int main(){
register unsigned int x1,x2,y1,y2;
scanf("%i %i %i %i", &x1,&y1,&x2,&y2);
printf("%.4f", sqrt(pow(x2-x1,2) + pow(y2-y1, 2)));
}
Run Code Online (Sandbox Code Playgroud)
如果你避免使用pow(),你不仅避免了一个函数调用,如果你自己乘以(x2-x1)(可能会或可能不会被优化出来 - 我不确定),但你可以延迟转换为浮点值,直到只有一个,到sqrt().
如果您的实际问题涉及读取的不仅仅是一行输入(并假设整数读取如您的示例中所示),我怀疑性能的最大差异将是放弃scanf()使用编写良好的自定义函数,例如,fread()来自stdin.
| 归档时间: |
|
| 查看次数: |
160 次 |
| 最近记录: |