poj1006 Biorhythms

本文介绍了一个基于中国剩余定理的问题解决方法,通过给定个人生命中三个周期(体力、情绪和智力)的峰值日期,计算下一个这三个周期同时达到峰值的日子。文章提供了详细的数学公式和C语言实现代码。

Description


Some people believe that there are three cycles in a person’s life that start the day he or she is born. These three cycles are the physical, emotional, and intellectual cycles, and they have periods of lengths 23, 28, and 33 days, respectively. There is one peak in each period of a cycle. At the peak of a cycle, a person performs at his or her best in the corresponding field (physical, emotional or mental). For example, if it is the mental curve, thought processes will be sharper and concentration will be easier.
Since the three cycles have different periods, the peaks of the three cycles generally occur at different times. We would like to determine when a triple peak occurs (the peaks of all three cycles occur in the same day) for any person. For each cycle, you will be given the number of days from the beginning of the current year at which one of its peaks (not necessarily the first) occurs. You will also be given a date expressed as the number of days from the beginning of the current year. You task is to determine the number of days from the given date to the next triple peak. The given date is not counted. For example, if the given date is 10 and the next triple peak occurs on day 12, the answer is 2, not 3. If a triple peak occurs on the given date, you should give the number of days to the next occurrence of a triple peak.

Solution


题目巨长,题意巨水

中国剩余定理

给出一堆形如

xa1(modm1)x≡a1(modm1)
xa2(modm2)x≡a2(modm2)
xa3(modm3)x≡a3(modm3)

这样的方程,求一个最小的x

定义M=ni=1miM=∏i=1nmi,且Mi=MmiMi=Mmi,有

ans=(i=1nMiM1iai)(modM)ans=(∑i=1nMi∗Mi−1∗ai)(modM)

其中M1iMi−1表示MiMi在模mimi意义下的逆元,这里mimi不一定是质数因此要exgcd

Code


#include <stdio.h>
#include <string.h>
#define rep(i,st,ed) for (int i=st;i<=ed;++i)

typedef long long LL;
const int N=2005;

LL m[N],a[N];

LL ksm(LL x,LL dep,LL MOD) {
    if (dep==0) return 1;
    if (dep==1) return x;
    LL tmp=ksm(x,dep/2,MOD);
    if (dep&1) return tmp*tmp%MOD*x%MOD;
    return tmp*tmp%MOD;
}

void exgcd(LL a,LL b,LL &x,LL &y)  {
    if (!b) {
        x=1; y=0;
        return ;
    }
    exgcd(b,a%b,x,y);
    LL tmp=x; x=y; y=tmp-(a/b)*y;
}

int main(void) {
    int cnt=0;
    while (1) {
        LL M=1,ans=0,st;
        rep(i,1,3) scanf("%lld",&a[i]);
        scanf("%lld",&st);
        if (a[1]==-1&&a[2]==-1&&a[3]==-1&&st==-1) break;
        m[1]=23; m[2]=28; m[3]=33;
        rep(i,1,3) M=M*m[i];
        rep(i,1,3) {
            LL Mi=M/m[i];
            LL x,y; exgcd(Mi,m[i],x,y);
            ans=(ans+Mi%M*x%M*a[i]%M+M)%M;
        }
        ans-=st;
        if (ans<=0) ans=ans+M;
        printf("Case %d: the next triple peak occurs in %lld days.\n",++cnt,ans);
    }
    return 0;
}
内容概要:本文详细介绍了一个基于TCN-BiLSTM-MHA(时序卷积网络-双向长短期记忆网络-多头注意力机制)的深度学习模型,用于多特征时序数据的分类预测。项目通过融合TCN捕捉多尺度长距离依赖、BiLSTM提取双向时序动态特征、MHA实现全局注意力加权聚合,构建端到端的自动化特征学习与分类框架。文中涵盖模型架构设计、代码实现细节、GUI可视化界面开发、部署应用方案及多领域适用场景,并提供完整的程序示例和数据生成方法,强调模型的可解释性、鲁棒性与工程落地能力。; 适合人群:具备一定Python编程基础和深度学习知识,熟悉PyTorch框架的数据科学从业者、高校研究人员及人工智能工程师,尤其适合从事时序数据分析、智能预测系统开发的相关技术人员。; 使用场景及目标:①应用于智能制造、金融风控、医疗健康、智能交通等领域的多特征时序分类任务;②掌握TCN、BiLSTM与注意力机制的融合建模范式;③实现从模型构建、训练优化到GUI部署的全流程实战;④提升对复杂时序数据建模的理解与工程实践能力。; 阅读建议:建议读者结合提供的完整代码进行逐模块调试与运行,重点关注数据预处理、模型堆叠逻辑、注意力机制实现及GUI集成部分,同时可扩展尝试超参数调优、模型轻量化与多模态数据融合,以深化对整体架构的理解与应用能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值