问题遇到的现象和发生背景
题目编号: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;
}