牛客小白月赛5中H,J题题解

H题

只要使用时间复杂度较低的求最小公倍数办法即可,我使用的是辗转相除法
时间复杂度O(logn)
代码

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
int main(){
    unsigned long long a,b,t,num,a1,b1;
    scanf("%llu %llu",&a,&b);
    if(a==b){
        num = a;
    }else{
        if(a<b){
            t = a;
            a = b;
            b = t;
        }
        a1 = a;
        b1 = b;
        while(a%b){
            t = a%b;
            a = b;
            b = t;
        }
        num=a1/b;
        num*=b1;
    }
    printf("%llu\n",num);
}

J题

只要依照顺序将其比对即可
时间复杂度O(1)
代码

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h> 
int a[24] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23};
int b[24] = {0,10,20,30,40,50,-1,-1,-1,-1, 1,11,21,31,41,51,-1,-1,-1,-1, 2,12,22,32};
int main(){
    int m,n,i;
    scanf("%d:%d",&m,&n);
    i = m;
    while(1){
        if(i==-1){
            i = 23;
        }
        if(i == m){
            if(b[i]<n&&b[i]!=-1){
                break;
            }
        }else{
            if(b[i]!=-1){
                break;
            }
        }
        i--;
    }
    printf("%d:%d\n",a[i],b[i]);
    i  = m;
    while(1){
        i%=24;
        if(i == m){
            if(b[i]>n){
                break;
            }
        }else{
            if(b[i]!=-1){
                break;
            }
        }
        i++;
    }
    printf("%d:%d\n",a[i],b[i]);
}
全部评论
请输入你的观点
点赞 回复 分享
发布于 2018-10-08 20:57

相关推荐

牛客771574427号:恭喜你,华杰
点赞 评论 收藏
分享
霁华Tel:秋招结束了,好累。我自编了一篇对话,语言别人看不懂,我觉得有某种力量在控制我的身体,我明明觉得有些东西就在眼前,但身边的人却说啥也没有,有神秘人通过电视,手机等在暗暗的给我发信号,我有时候会突然觉得身体的某一部分不属于我了。面对不同的人或场合,我表现出不一样的自己,以至于都不知道自己到底是什么样子的人。我觉得我已经做的很好,不需要其他人的建议和批评,我有些时候难以控制的兴奋,但是呼吸都让人开心。
点赞 评论 收藏
分享
小红书 后端开发 总包n+8w+期权
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务