POJ_1006

http://poj.org/problem?id=1006

根据题意很自然地写出了暴破解法如下:

复制代码
//POJ_1006
#include<stdio.h>
int main(){
    int n,i,j,k;
    int p,q,r,d;
    n = 0;
    while(true){
        scanf("%d %d %d %d",&p,&q,&r,&d);
        if(p==-1 && q==-1 && r==-1 && d==-1){
            break;
        }
        n++;
        for(i=p;;i+=23){
            for(j=q;j<=i;j+=28){
                for(k=r;k<=j;k+=33){
                    if(k==j&&j==i){
                        goto l1;
                    }
                }
            }
        }
l1:        if(d>=i){
            i+=21252; 
        }
        printf("Case %d: the next triple peak occurs in %d days.\n",n,i-d);
    }
    return 0;
}
复制代码

但是太慢了,TLE

网上搜了下,根据中国剩余定理可以使效率得到很好的提升

https://blog.csdn.net/blogdevteam/article/details/102485483

复制代码
//POJ_1006
//https://blog.csdn.net/qq_40379678/article/details/79034011
//中国剩余定理
/*
    a%b=c ==> (a+kb)%b=c
       a%b=c ==> (a*k)%b=kc 
*/
/*
    S = p+23a = q+28b = r+33c
    23*28 = 644
    23*33 = 759
    28*33 = 924
    23*28*33 = 21252
*/
#include<stdio.h>
int main(){
    int n,i,j,k;
    int p,q,r,d;
    int p1,q1,r1;
    int S;
    n = 0;
    while(true){
        scanf("%d %d %d %d",&p,&q,&r,&d);
        if(p==-1 && q==-1 && r==-1 && d==-1){
            break;
        }
        n++;
        p1 = p%23;
        for(i=924;;i+=924){
            if(i%23==1){
                break;
            }
        }
        i = i*p1;
        q1 = q%28;
        for(j=759;;j+=759){
            if(j%28==1){
                break;
            }
        }
        j = j*q1;
        r1 = r%33;
        for(k=644;;k+=644){
            if(k%33==1){
                break;
            }
        }
        k = k*r1;
        S = (i+j+k)%21252;
        if(S<=d){
            S = S+21252;
        }
        printf("Case %d: the next triple peak occurs in %d days.\n",n,S-d);
    }
    return 0;
}
复制代码

————————————————

版权声明:本文为CSDN博主「abc827300139」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ABC827300139/article/details/102490609

posted @   智人心  阅读(101)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示