1006:Biorhythms

该代码解决了一个中等难度的问题,涉及计算三个不同周期(23天、28天、33天)的高峰日在给定起始日之后的下一次同时出现。程序使用布尔数组记录每个周期的高峰日,并在给定的日期范围内查找三者重叠的日期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(77条消息) 百炼1006--Biorhythms_百练 1006_zha_zha_wei的博客-优快云博客

中等难度 回练


#include <stdio.h>
#include <string.h>
#define M 40000
 
bool ans[3][M];
 
int main()
{
    int p, e, i, d;
    int n(0);//计录循环数的
 
    while(scanf("%d%d%d%d", &p, &e, &i, &d) != EOF && p >= 0)
    {
        memset(ans, 0, sizeof(ans));
 
        p = p % 23;//得到在一个周期内高峰第几天
        e = e % 28;
        i = i % 33;
 
        for(int x = p; x < M; x += 23)//把各自的高峰天打张表
            ans[0][x]++;
 
        for(int x = e; x < M; x += 28)
            ans[1][x]++;
 
        for(int x = i; x < M; x += 33)
            ans[2][x]++;
 
 
        for(int x = d + 1; x < M; x++)
            if(ans[0][x] == 1 && ans[1][x] == 1 && ans[2][x] == 1 )
        {
            printf("Case %d: the next triple peak occurs in %d days.\n", ++n, x - d);
            break;
        }
    }
 
    return 0;
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值