| ||||||||||
| 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 | |||||||||
不能ac的O(1)代码。。。。In Reply To:这题重点是算法复杂度,应该没有什么特殊数据,建议您暴力生成数据来验证一下吧 Posted by:liangzhirong at 2008-10-19 20:18:49 #include<stdio.h>
int main()
{
long long n,m,k;
scanf("%d",&m);
while(m)
{
scanf("%lld %lld",&n,&k);
if (k<=n/2+1) printf("1/%d\n",n-k+1);
else if (k<=5*n/6+1&&n%2==0)
{
if ((k-n/2)%2==0) printf("2/%d\n",n-(k-n/2-1));
else printf("1/%d\n",n/2-(k-n/2-1)/2);
}
else if (k<=5*n/6+1&&n%2==1)
{
if ((k-n/2)%2==0) printf("2/%d\n",n-(k-n/2-2));
else printf("1/%d\n",n/2-(k-n/2-2)/2);
}
else if (n%6==1)
{
if ((k-5*n/6)%4==2) printf("2/%d\n",2*n/3-(k-5*n/6-2)/4*2+1);
else if ((k-5*n/6)%4==3) printf("3/%d\n",n-(k-5*n/6-3)/4*3);
else if ((k-5*n/6)%4==0) printf("1/%d\n",n/3-(k-5*n/6)/4+1);
else printf("3/%d\n",n-(k-5*n/6-1)/4*3+1);
}
else if (n%6==2)
{
if ((k-5*n/6)%4==3) printf("2/%d\n",2*n/3-(k-5*n/6-3)/4*2);
else if ((k-5*n/6)%4==0) printf("3/%d\n",n-(k-5*n/6)/4*3+2);
else if ((k-5*n/6)%4==1) printf("1/%d\n",n/3-(k-5*n/6-1)/4+1);
else printf("3/%d\n",n-(k-5*n/6-2)/4*3);
}
else if (n%6==3)
{
if ((k-5*n/6)%4==0) printf("2/%d\n",2*n/3-(k-5*n/6)/4*2+1);
else if ((k-5*n/6)%4==1) printf("3/%d\n",n-(k-5*n/6-1)/4*3+1);
else if ((k-5*n/6)%4==2) printf("1/%d\n",n/3-(k-5*n/6-2)/4);
else printf("3/%d\n",n-(k-5*n/6-3)/4*3-1);
}
else if (n%6==4)
{
if ((k-5*n/6)%4==1) printf("2/%d\n",2*n/3-(k-5*n/6-1)/4*2+1);
else if ((k-5*n/6)%4==2) printf("3/%d\n",n-(k-5*n/6-2)/4*3);
else if ((k-5*n/6)%4==3) printf("1/%d\n",n/3-(k-5*n/6-3)/4);
else printf("3/%d\n",n-(k-5*n/6-4)/4*3-2);
}
else if (n%6==5)
{
if ((k-5*n/6)%4==3) printf("2/%d\n",2*n/3-(k-5*n/6-3)/4*2);
else if ((k-5*n/6)%4==0) printf("3/%d\n",n-(k-5*n/6)/4*3+2);
else if ((k-5*n/6)%4==1) printf("1/%d\n",n/3-(k-5*n/6-1)/4+1);
else printf("3/%d\n",n-(k-5*n/6-2)/4*3);
}
else
{
if ((k-5*n/6)%4==3) printf("2/%d\n",2*n/3-(k-5*n/6-3)/4*2-1);
else if ((k-5*n/6)%4==0) printf("3/%d\n",n-(k-5*n/6)/4*3+1);
else if ((k-5*n/6)%4==1) printf("1/%d\n",n/3-(k-5*n/6-1)/4);
else printf("3/%d\n",n-(k-5*n/6-2)/4*3-1);
}
m--;
}
return 0;
}
这是我的源码,测试很多数据都过了,就是不知道哪错了,哪位大牛帮我看下。。。
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator