Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
传说要用大整数In Reply To:这样的思路有什么错? Posted by:bmexue at 2006-11-23 00:45:01 > 让周期时间d[i]从小到大排序,周期时间相同的合并成一个点,最后还剩N个两两周期不同的行星。 > > 那么相邻两个行星的产生半圈的距离差所需时间为T[i] = d[i]*d[i+1] / (d[i+1]-d[i])*2; > 这样就可以产生N-1个T[i],求出这个N-1个T[i-1]的最小公倍数。 > > 就这样是在想不出那里有错,谁能指出来思路哪里错了。 > 我的代码: > #include <iostream> > #include <algorithm> > using namespace std; > > struct Data > { > int numerator ,denominator ; > }; > int d[1001],n,N; > int T[1001]; > Data dp[1001]; > > int gcd(int a, int b) > { > int tmp; > if(a<b) > { > tmp = a; > a= b; > b= tmp; > } > while(true){ > if(a%b ==0) > break; > tmp =a%b; > a = b; > b = tmp; > } > return b; > } > int mul(int a, int b) > { > int g = gcd(a,b); > b = b/g; > return a*b; > } > void Mylest(int n1, int d1, int n2, int d2, int &rstN, int &rstD) > { > rstN = mul(n1,n2); > rstD = gcd(d1,d2); > } > void work(int i) > { > > dp[i].numerator = T[i]*T[i+1]; > dp[i].denominator = (T[i+1]-T[i])*2; > > int g = gcd(dp[i].denominator,dp[i].numerator); > > dp[i].numerator = dp[i].numerator/g; > dp[i].denominator=dp[i].denominator/g; > > } > int main() > { > //freopen("C:\\ACMData.txt","r",stdin); > > scanf("%d",&n); > int i=0; > while(i<n){ > scanf("%d",&d[i]); > i++; > } > sort(d,d+n); > > N=0; i=0; > T[N] = d[i]; i++;N++; > while( i<n){ > if( d[i] == d[i-1]){ > i++; continue; > } > else{ > T[N] = d[i]; > N++; i++; > } > } > i=0; > while(i<N-1){ > work(i); > i++; > } //算法应该没错,难道是哪里没想到!!!! > > int numerator = dp[0].numerator; > int denominator = dp[0].denominator; > i=1; //N个有效点 那么就只有N-1个相邻“最小半圈时间差” > while(i<N-1) //Çó×îС¹«±¶Êý > { > Mylest(numerator,denominator,dp[i].numerator,dp[i].denominator,numerator,denominator); > i++; > } > > int g= gcd(numerator,denominator); > numerator = numerator/g; > denominator=denominator/g; > > printf("%d %d\n",numerator,denominator); > return 0; > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator