Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:要使用高精度吗?

Posted by sfsdufe20191844127 at 2021-03-25 23:22:52 on Problem 3262
In Reply To:要使用高精度吗? Posted by:Move at 2007-09-22 17:41:07
> 我用了4个64位来存储
> 还是WA。
> 
> 以下是我的代码,请指教。
> 
> #include <stdio.h>
> #include <string.h>
> #include <iostream>
> #include <algorithm>
> using namespace std;
> 
> #define N 100006
> #define M 100000000
> 
> typedef struct
> {
> 	__int64 d;
> 	__int64 t;
> }cow;
> cow a[N];
> 
> bool cmp(cow a,cow b)
> {
> 	if(a.d==b.d) return a.t < b.t;
> 	else return a.d > b.d;
> }
> 
> int main()
> {
> 	int i,j,n;
> 	__int64 sum[4],ti;
> 	__int64 t,d;
> 
> 	memset(a,0,sizeof(a));
> 	scanf("%d",&n);
> 	for(i=0;i<n;i++)
> 	{
> 		scanf("%I64d%I64d",&t,&d);
> 		a[i].t=t;
> 		a[i].d=d;
> 	}
> 	sort(a,a+n,cmp);
> 	ti=0;
> 	for(i=0;i<4;i++)
> 		sum[i]=0;
> 	for(i=0;i<n;i++)
> 	{
> 		sum[0]+=a[i].d*ti;
> 		for(j=0;j<3;j++)
> 		{
> 			if(sum[j]>=M)
> 			{
> 				sum[j+1]+=sum[j]/M;
> 				sum[j]=sum[j]%M;
> 			}
> 		}
> 		ti+=2*a[i].t;
> 	}
> 
> 	if(sum[3]!=0) printf("%I64d%08I64d%08I64d%08I64d\n",sum[3],sum[2],sum[1],sum[0]);
> 	else if(sum[2]!=0) printf("%I64d%08I64d%08I64d\n",sum[2],sum[1],sum[0]);
> 	else if(sum[1]!=0) printf("%I64d%08I64d\n",sum[1],sum[0]);
> 	else printf("%I64d\n",sum[0]);
> 	return 0;
> }

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator