杭电oj第三天1019 1021

博主分享了在杭电oj解题的体验,通过一道求最小公倍数的问题,介绍了如何从最大公约数转换求解,并提醒注意越界问题。同时提到另一道较简单的题目,并幽默地将东野圭吾与程序员角色相联系,鼓励自我了解和提升。
摘要由CSDN通过智能技术生成

昨儿睡晚了,今儿没起来跑步,遗憾,哈哈。那就开始:
第1019题
在这里插入图片描述
此题的意思是求出输入一组数字的最小公倍数,昨天有道题是求最大公约数,只需要把每个数都乘起来,除以最大公约数就是最小公倍数了。需要注意越界问题,不如先设一个初值d=1,先除后乘防止越界。代码如下:

#include<stdio.h>

int gcd(int a,int b)
{
    if(b==0) return a;
    return gcd(b,a%b);
}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--){
        int n;
        scanf("%d",&n);
        int d=1;
        for(int i=0;i<n;i++){
            int x;
            scanf("%d",&x);
            d=d/gcd(d,x)*x;
        }
        printf("%d\n",d);
    }
    return 0;
}

第1021题
在这里插入图片描述
比较简单没啥想说的,代码如下:

#include <stdio.h>
int f[1000005];
int main()
{
    int n;
    f[0] = 7 % 3;
    f[1] = 11 % 3;
    for (int i = 2; i <= 1000000; i++)
        f[i] = (f[i - 1] + f[i - 2]) % 3;
    while(scanf("%d", &n) != EOF)
    {
        if (f[n] == 0)
            printf("yes\n");
        else
            printf("no\n");
    }

    return 0;
}

突然感觉东野圭吾好适合当个程序员啊哈哈哈哈哈。
只有自己才最了解自己,共勉!女神晚安~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值