最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

1002 题解

互联网 admin 2浏览 0评论

1002 题解

 

这道题用了 中国剩余定理,开始不知道只是硬想结果总是超时后来向高人请教了一下才通过.基础很重要啊.

若某数x分别被d1、、…、dn除得的余数为r1、r2、…、rn,则可表示为下式:
x=R1r1+R2r2+…+Rnrn+RD
其中R1是d2、d3、…、dn的公倍数,而且被d1除,余数为1;
R1 、R2…、Rn是d1、d2、…、dn-1的公倍数,而且被dn除,余数为1;
D是d1、d2、…、的最小公倍数;
R是任意整数,可根据实际需要决定;
且d1、、…、必须互质,以保证每个Ri(i=1,2,…,n)都能求得.

 

// 改进后
#include  < stdio.h >
int  main()
... { 
    int p,e,i,d,a,t=0;
    while(1)
    ...{
        scanf("%d%d%d%d",&p,&e,&i,&d);
        if(p==-1 && e==-1 && i==-1 && d==-1)
            break;
// 5544 14421 1288  已求
        a=(5544*p+14421*e+1288*i-d+21252)%21252;
        if(!a)
            a=21252;
        printf("Case %d: the next triple peak occurs in %d days. ",++t,a);
    }
    return 0;
} // 无法通过的代码
#include < stdio.h >
int  main()
... {
    int i=0;
    int j=0;
    int a[100][4];
    int p,e,m,d;
    int temp=1;
    int n=0;
    int days=0;
    do
    ...{
        scanf("%d %d %d %d",&p,&e,&m,&d);
            days=0;
            p=p%23;
            e=e%28;
            m=m%33;
            while(1)
            ...{
                days=p+23*n;
                if(days%28==e&&days%33==m&&(days-d>0))
                ...{
                    
                    printf("Case %d: the next triple peak occurs in %d days. ",j+1,days-d);
                    break;
                }
                n++;
            }
    }while(p!=-1&&e!=-1&&m!=-1&&d!=-1);
    return 1;
    
}

1002 题解

 

这道题用了 中国剩余定理,开始不知道只是硬想结果总是超时后来向高人请教了一下才通过.基础很重要啊.

若某数x分别被d1、、…、dn除得的余数为r1、r2、…、rn,则可表示为下式:
x=R1r1+R2r2+…+Rnrn+RD
其中R1是d2、d3、…、dn的公倍数,而且被d1除,余数为1;
R1 、R2…、Rn是d1、d2、…、dn-1的公倍数,而且被dn除,余数为1;
D是d1、d2、…、的最小公倍数;
R是任意整数,可根据实际需要决定;
且d1、、…、必须互质,以保证每个Ri(i=1,2,…,n)都能求得.

 

// 改进后
#include  < stdio.h >
int  main()
... { 
    int p,e,i,d,a,t=0;
    while(1)
    ...{
        scanf("%d%d%d%d",&p,&e,&i,&d);
        if(p==-1 && e==-1 && i==-1 && d==-1)
            break;
// 5544 14421 1288  已求
        a=(5544*p+14421*e+1288*i-d+21252)%21252;
        if(!a)
            a=21252;
        printf("Case %d: the next triple peak occurs in %d days. ",++t,a);
    }
    return 0;
} // 无法通过的代码
#include < stdio.h >
int  main()
... {
    int i=0;
    int j=0;
    int a[100][4];
    int p,e,m,d;
    int temp=1;
    int n=0;
    int days=0;
    do
    ...{
        scanf("%d %d %d %d",&p,&e,&m,&d);
            days=0;
            p=p%23;
            e=e%28;
            m=m%33;
            while(1)
            ...{
                days=p+23*n;
                if(days%28==e&&days%33==m&&(days-d>0))
                ...{
                    
                    printf("Case %d: the next triple peak occurs in %d days. ",j+1,days-d);
                    break;
                }
                n++;
            }
    }while(p!=-1&&e!=-1&&m!=-1&&d!=-1);
    return 1;
    
}

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论