蓝桥杯 核桃的数量

图片发自简书App

以上就是题目

明明只是求最小公倍数,我却转了个大弯儿。
话不多说先贴上代码

#include<stdio.h>
#include<string.h>

int arr_max(int arr[], int n)
{
    int i, max = 0;
    for(i = 0; i < n; i++)
    {
        if(max < arr[i])
        {
            max = arr[i];
        }
    }
    return max;
}


int min_gongbeishu(int arr[], int n, int in_max)
{
    int i;
    for(i = in_max; ; i++)
    {
        int j;
        int count = 0;//统计 big 是 arr[] 的倍数的个数  
        for(j = 0; j < n; j++)
        {
            if(i % arr[j] == 0)
            {
                count++;
            }
        }
        if(count == n)
        {   
            return i;
        }
    }
}

int main()
{   
    int a[3];//每组人数 
    int i;
    for(i = 0; i < 3; i++)
        scanf("%d", &a[i]); 
    
    int in_max = arr_max(a, 3);
    //求最小公倍数
    int ans = min_gongbeishu(a, 3, in_max);
    printf("%d\n", ans);
    return 0;
}

补充一种 int arr_max(int arr[], int n) 的写法

int arr_max(int *arr, int n)
{
int max = 0;
for(int i = 0; i < n; i++)
{
if(max < *(arr + i))
{
max = *(arr);
}
}
return max;
}


最大公约数

int gcd(int a, int b)
{
if(a % b)
{
gcd(b, a % b);
} else {
return b;
}
}


最小公倍数

int lcm(int a, int b)
{
return a * b / gcd(a, b);
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容