ACM编程技巧--代码片断

  • 验证n是不是彻底平方数
  1. #include<math.h>
  2. double m=sqrt(n);
  3. if(floor(m+0.5)==m)
  4. printf("%d是彻底平方数。\n",m);
亮点:函数floor(x)返回x的整数部分,但浮点数的运算(sqrt)有可能存在偏差[不常常,但必定会有]。若因为偏差影响,整数1变成0.99999,那么floor(m)==m就会产生偏差。
  • 计算程序所花费的时间
  1. #include<time.h>
  2. printf("Time used=%.2lf\n",(double)clock()/CLOCK+PRE_SEC);
优点:可以清楚的检验程序是否知足比赛时间要求
  • 本机测试时用文件重定向,一旦提交到比赛,就自动“删除”重定向语句
  1. #ifdef LOCAL
  2. freopen("data.in","r",stdin);
  3. freopen("data.out","w",stdout);
  4. #endif
将上面代码置于main函数最上面。编译时用下面的命令[命令中定义了LOCAL]
gcc main.c -o main -DLOCAL
亮点:本机测试时,由于定义了LOCAL变量而使用了重定向,而上传后由于比赛编译命令里没有-DLOCAL选项而不会使用重定向。
  • 士大夫
相关文章
相关标签/搜索