重名大师 2023-02-11 01:36 采纳率: 96.6%
浏览 36
已结题

这个代哪里有问题吗只通过了三个

从逻辑上看了几遍感觉没什么问题呀(只学了c,还不会c++),请求指点
描述
给定n个正整数,将它们分组,使得每组中任意两个数互质。至少要分成多少个组?


第一行是一个正整数n。1 <= n <= 10。
第二行是n个不大于10000的正整数。
输出
一个正整数,即最少需要的组数。


```c
#include<stdio.h>
int gcy(long long x,long long y)
{int z;
    if(x<y){z=x;x=y;y=z;}
    if(y==0){return x;}
    else return gcy(y,x%y);

}
int main()
{
    long long a[100];
    long long n;
    long long i,j,k,r,m=0;
    scanf("%lld",&n);
    for(i=0;i<n;i++)
    {
        scanf("%lld",&a[i]);
    }
    for(i=0;i<n-1;i++)
    {r=a[i];
        for(k=i+1;k<n;k++)
        {
            if(gcy(r,a[k])==1){r=r*a[k];j=a[k];a[k]=a[n-1];a[n-1]=j;n--;k--;}
        }
       m++;
    }
    printf("%d",m);
    return 0;
}


```

  • 写回答

2条回答 默认 最新

  • cjh4312 2023-02-11 07:52
    关注

    ChatGPT生成代码,仅供参考

    
    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
        int n;
        scanf("%!d(MISSING)", &n);
        int *arr = (int*)malloc(sizeof(int)*n);
        for(int i=0; i<n; i++)
            scanf("%!d(MISSING)", &arr[i]);
        int count = 0;
        for(int i=0; i<n; i++)
        {
            int flag = 0;
            for(int j=0; j<count; j++)
            {
                if(arr[i] %!a(MISSING)rr[j] == 0 || arr[j] %!a(MISSING)rr[i] == 0)
                {
                    flag = 1;
                    break;
                }
            }
            if(flag == 0)
                arr[count++] = arr[i];
        }
        printf("%!d(MISSING)\n", count);
        return 0;
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月23日
  • 已采纳回答 2月15日
  • 创建了问题 2月11日

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集