孔.. 2021-11-25 10:22 采纳率: 100%
浏览 112
已结题

n倍数关系,5个测试点有一个没过,改了long还是不行

问题遇到的现象和发生背景

题目编号:Exp04-Basic02

题目名称:n倍数关系

题目描述:

给定若干不完全相同的正整数(<10000)和n(n<5),计算这些正整数里面有多少数对满足:其中一个是另一个的n倍。例如:1 4 3 2 9 7 18 22,n=3时得到的答案是2;因为3是1的3倍,9是3的3倍。

输入:输入第一行给出正整数n的值,接下来包括多组测试数据。每组数据最多100个整数占用一行,以数字0结束(不计入100个整数里)。测试数据不超过20组,最后一行只包括-1,表示输入数据结束。

输出:对每组输入数据,输出一行,给出有多少数对满足其中一个是另一个n倍。(注:最后一行末尾无换行符等多余字符。)

样例:

输入:
2
1 4 3 2 9 7 18 22 0
2 4 8 10 0
7 5 11 13 1 3 0
-1
输出:
3
2
0

这是我的代码


#include<stdio.h>
int main()
{
    int n, i, j;
    long a[100][100] = { 0 };
    scanf("%d", &n);
    for (i = 0; i < 100; i++)
    {
        for (j = 0; j < 100; j++)
        {
            scanf("%ld", &(a[i][j]));
            if (a[i][j] == 0 || a[i][j] == -1)
            {
                break;
            }
        }
        if (a[i][0] == -1)break;
        if (n != 1)
        {
            int x = 0;
            for (int k = 0; k <= j - 1; k++)
            {
                for (int s = 0; s <= j - 1; s++)
                {
                    if ((a[i][k]) / (a[i][s]) == n && (a[i][k]) % (a[i][s]) == 0)
                        x++;
                }
             }
            printf("%d\n", x);
        }
        if (n == 1)
        {
            int y = 0;
            for (int k = 0; k <= j - 2; k++)
            {
                for (int s = k + 1; s <= j - 1; s++)
                {
                    if ((a[i][k]) == (a[i][s]))
                        y++;
                }
            }
            printf("%d\n", y);
        }
    }
    return 0;
}
  • 写回答

2条回答 默认 最新

  • 於黾 2021-11-25 10:28
    关注

    已经告诉你<10000了,int型足够存了。
    你出错不是类型错误,是逻辑有问题
    题目要求的是输入多行,然后再输出多行
    你的逻辑是每输入一行就处理一行,然后直接输出
    那只要测试样例里数据是多行的,你这一定不通过。
    -=-=
    还有,n=1和n!=1其实逻辑一样,不需要分开处理,但是要写好条件,k!=s,不要自己除自己
    还有(a[i][k]) / (a[i][s]) == n && (a[i][k]) % (a[i][s]) == 0这个逻辑太繁琐
    用a[i][s]*n==a[i][k]就可以了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月13日
  • 已采纳回答 12月5日
  • 创建了问题 11月25日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分