• 9.26<立方网>技术笔试题


    该公司题目感觉不难,算法设计有三道大题。

    1、设有m和n两个整数,求它们的最大公约数和最小公倍数。

    2、猴子分桃问题,每次分桃多一个,共有五个猴子,问最少有多少个桃子。

    3、关于java的题目,有A,B,C三个线程, A线程输出A, B线程   输出B, C线程输出C,要求, 同时启动三个线程, 按顺序输出ABC, 循环10次。

    第一题:最大公约数可以用辗转相除法,最小公倍数等于m*n/最大公约数。

    //最大公约数求法
    int gcd(int m,int n)
    {
        int max,min;
        max=m>n?m:n;
        min=m<n?m:n;
        while (min!=0)
        {
            int temp=max%min;
            max=min;
            min=temp;
        }
        return max;
    }
    //最小公倍数
    int gcdMax(int m,int n)
    {
        int temp=gcd(m,n);
        int gcdTemp=m*n/temp;
        return  gcdTemp;
    }

    第二题:该题可以用从后面递归的算法进行求解,http://blog.csdn.net/a542214712/article/details/812287有明确解法,都是考数学的问题,最少的桃子数为5^n-4,当n为5的时候,结果为3121。

    第三题:这题是多线程的问题,考虑到java我本身不太懂,后面用c++简单的实现了一下,分别创建三个线程,然后用WaiForSingleObject函数简单的实现了一下。

    DWORD dw;
        for(int i=0;i<10;i++)
    
        {
    
            HANDLE h1=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)FuncA,NULL,0,&dw);
    
            WaitForSingleObject(h1,INFINITE);
    
            HANDLE h2=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)FuncB,NULL,0,&dw);
    
            WaitForSingleObject(h2,INFINITE);
    
            HANDLE h3=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)FuncC,NULL,0,&dw);
    
            WaitForSingleObject(h3,INFINITE);
            CloseHandle(h1);
            CloseHandle(h2);
            CloseHandle(h3);
    }
    void FuncA()
    {
            cout<<"A ";
    }
    void FuncB()
    {
            cout<<"B ";
    }void FuncC()
    {
            cout<<"C ";
    }
  • 相关阅读:
    c# 遍历DataTable
    c# 判断网络状态
    c# 发送Http 请求
    c# 处理Json字符串
    环境搭建(Nginx + PHP7 + Mysql + 运行ThinkPHP5项目)
    c# 获取时间戳
    php 处理 byte
    微信小程序 滚动至元素底部
    mysql 删除 多个字段相同的 重复的 数据
    微信小程序 跑马灯效果
  • 原文地址:https://www.cnblogs.com/master-image/p/3995701.html
Copyright © 2020-2023  润新知