Why so serious? --[NKU]schindlerlee

2010年02月07日星期日.sgu146 注意精度。

把浮点行转换成整数计算,避免精度的损失。

double l;
LL len;
int n;
int main()
{
  int i;
  LL sum = 0,a,b;
  scanf("%lf %d",&l,&n);
  len = l * 10000 + 0.5;
  for (i = 0;i < n;i++) {
      cin >> a >> b;
      sum = (LL)(sum + (a * 10000 * b)%len) % len;
  }

  LL candidate = len - sum;
  LL res = min(sum,candidate);
  cout << res / 10000 << '.';
  printf("%04I64d\n",res % 10000);
  //printf("%04lld\n",res % 10000);

  return 0;
}


posted on 2010-02-07 18:43 schindlerlee 阅读(160) 评论(0)  编辑 收藏 引用 所属分类: 解题报告


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理