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

算法绝对牛B,怎么说我错了???跪求更牛人来解释一下!!!

Posted by justkain at 2006-08-15 18:38:33 on Problem 1061
#include "stdio.h"
#include "stdlib.h"

int gys(int,int);//求最大公约数;
void precheck(int a,int b,int c);//检查输入、化简;
void check(int a,int b,int c,int &n,int &m);//辗转递归;

void main(void) 
{
    int x=1,y=2,m=3,n=4,l=5;
    printf("Input\n");
    scanf("%d %d %d %d %d",&x,&y,&m,&n,&l);
    printf("Output\n");
    precheck(abs(x-y),abs(m-n),l);
}

void precheck(int a,int b,int c)
{
    int n,m,ac,bc,abc;
    int la=a,lb=b,lc=c;
//    printf("--------------------\n",a,b,c);
//    printf("a=%d,b=%d,c=%d\n",a,b,c);
    la%=lc;lb%=lc;
    ac=gys(la,lc);
    bc=gys(lb,lc);
    abc=gys(ac,bc);
    if (bc>abc)//原理A+K*N*X=L*M*X;A,X互质则不成立;
    {
        printf("Impossible\n");
        return;
    }
    if(abc>1)
    {
        la/=abc;lb/=abc;lc/=abc;//a+n*b=m*c;化为最简式;
    }
    check(la,lb,lc,n,m);
    m=m+a/c+n*(b/c);
//    printf("a+(%d+%d*k)*b=(%d+%d*k)*c\n",n,c,m,b);
//    printf("--------------------\n",a,b,c);
    printf("%d\n",n);
}

int gys(int a,int b)
{
    unsigned int t,i;
    a=abs(a);b=abs(b);
    if(a==1)return 1;
    if(b==1)return 1;
    if (a==b)return a;
    if (a>b)
    {
        t=a%b;
        if (t==0)return b;
        i=b;
    }
    else
    {
        t=b%a;
        if (t==0)return a;
        i=a;
    }
    return gys(t,i);
}

void check(int a,int b,int c,int &n,int &m)
{
    if (a+b==c)
    {
        n=1;
        m=1;
    }
    else if (b==1)
    {
        n=c-a;
        m=1;
    }
    else if(a%b==0)
    {
        n=c/gys(b,c)-a/b;
        m=b/gys(b,c);
    }
    else
    {
        int rn,rm;
        check(-a%b,c%b,b,rn,rm);
        m=rn%b;
        n=(rn*(c/b)+rm-a/b)%c;
    }
}

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