2022年4月26日华为OD机试记录

本文记录了2022年4月26日进行的华为OD机试经历,考试包含三道题目:分解质因数,解决输入正整数分解质因数的问题;不等式组,处理三行五列的不等式组求最大差值;扑克牌顺子,判断13张牌是否能组成顺子。经过一个月自学,作者得分370分,认为第二题最具挑战性。
摘要由CSDN通过智能技术生成

考试时间150分钟,三道题分别是100,100,200分,考了370分,是自己自学了一个月的结果,其实最麻烦的感觉还是第二道题,因为第三题我知道自己错在哪里却没有时间去改了,就没有改了。

第一题:分解质因数:给定一个正整数,将其分解成两个质数的乘积,输出两个质数,按从小到大排序,有多组只需输出一组;如果没有则输出NO。

例如:输入15,输出3 5;输入7,输出NO。

#include<stdio.h>
#include<math.h>
//判断一个数是否为质数,是则返回1,否则返回0;
int prime(int x) {
    for (int i = 2; i <= sqrt(x); i++) {
        if (x % i == 0)
            return 0;
    }
    return 1;
}

int main()
{
    int number = 0;
    scanf("%d", &number);
    //一个数分解成两数之积,一定有一数小于等于该数的平方根;
    for (int i = 2; i <= sqrt(number);)
    {
        if (number % i == 0)
        {
            //找到一个因数就判断是否为质数;
            if (prime(i) == 1 && prime(number / i) == 1) {
                printf("%d %d\n", i, number / i);
                return 0;
            }
        }
        //i的变化方式
        if (i == 2)
            i++;
        else
            i += 2;
    }
    printf("NO\n");
    return 0;
}

第二题:输入一个三行五列的不等式组,条件有:

系数(double

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值