| ||||||||||
| 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:不能ac的O(1)代码。。。。 Posted by:Qinz at 2008-10-19 22:29:45 #include <iostream>
using std::cin;
using std::cout;
using std::endl;
long long factor,denominator;
void setAns(long long a, long long b)
{
factor = a;
denominator = b;
}
int main()
{
long long n,m,k;
cin >>m;
while (m--)
{
cin >>n >>k;
if (k<=n/2+1) setAns(1,n-k+1);
else if (k<=5*n/6+1&&n%2==0)
{
if ((k-n/2)%2==0)
setAns(2, n-(k-n/2-1));
else
setAns(1, n/2-(k-n/2-1)/2);
}
else if (k<=5*n/6+1&&n%2==1)
{
if ((k-n/2)%2==0)
setAns(2, n-(k-n/2-2));
else
setAns(1, n/2-(k-n/2-2)/2);
}
else if (n%6==1)
{
if ((k-5*n/6)%4==2)
setAns(2, 2*n/3-(k-5*n/6-2)/4*2+1);
else if ((k-5*n/6)%4==3)
setAns(3, n-(k-5*n/6-3)/4*3);
else if ((k-5*n/6)%4==0)
setAns(1, n/3-(k-5*n/6)/4+1);
else
setAns(3, n-(k-5*n/6-1)/4*3+1);
}
else if (n%6==2)
{
if ((k-5*n/6)%4==3)
setAns(2, 2*n/3-(k-5*n/6-3)/4*2);
else if ((k-5*n/6)%4==0)
setAns(3, n-(k-5*n/6)/4*3+2);
else if ((k-5*n/6)%4==1)
setAns(1, n/3-(k-5*n/6-1)/4+1);
else
setAns(3, n-(k-5*n/6-2)/4*3);
}
else if (n%6==3)
{
if ((k-5*n/6)%4==0)
setAns(2, 2*n/3-(k-5*n/6)/4*2+1);
else if ((k-5*n/6)%4==1)
setAns(3, n-(k-5*n/6-1)/4*3+1);
else if ((k-5*n/6)%4==2)
setAns(1, n/3-(k-5*n/6-2)/4);
else
setAns(3, n-(k-5*n/6-3)/4*3-1);
}
else if (n%6==4)
{
if ((k-5*n/6)%4==1)
setAns(2, 2*n/3-(k-5*n/6-1)/4*2+1);
else if ((k-5*n/6)%4==2)
setAns(3, n-(k-5*n/6-2)/4*3);
else if ((k-5*n/6)%4==3)
setAns(1, n/3-(k-5*n/6-3)/4);
else
setAns(3, n-(k-5*n/6-4)/4*3-2);
}
else if (n%6==5)
{
if ((k-5*n/6)%4==3)
setAns(2, 2*n/3-(k-5*n/6-3)/4*2);
else if ((k-5*n/6)%4==0)
setAns(3, n-(k-5*n/6)/4*3+2);
else if ((k-5*n/6)%4==1)
setAns(1, n/3-(k-5*n/6-1)/4+1);
else
setAns(3, n-(k-5*n/6-2)/4*3);
}
else
{
if ((k-5*n/6)%4==3)
setAns(2, 2*n/3-(k-5*n/6-3)/4*2-1);
else if ((k-5*n/6)%4==0)
setAns(3, n-(k-5*n/6)/4*3+1);
else if ((k-5*n/6)%4==1)
setAns(1, n/3-(k-5*n/6-1)/4);
else
setAns(3, n-(k-5*n/6-2)/4*3-1);
}
cout <<factor <<"/" <<denominator <<endl;
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator