描述
有一串可能含重复数字的列表,例如 N = {4,13,5,6,35,85,3},对于任意 A ∈ N,B ∈ N, 使 A+B = 10 或 |A-B| = 10; 即两数之合为 10 或两数之差的绝对值为 10。
找出所有满足条件的数字对 {A,B} 的个数。(A, B的顺序与原始数组保持一致)
输入
一行文本由英文逗号分隔,如 6,4,16
输出
2
输入样例
4,13,5,6,35,85,3
13,3,6,8,12,4,45,56,66,16
6,4,16
输出样例
2
4
2
代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stddef.h>
#include <ctype.h>
int main()
{
int i,j,m,n=0,a[1000];
for(i=0;i<1000;i++)
{
scanf("%d",&a[i]);
if(getchar()!=',')
break;
}
for(j=0;j<i;j++)
{
for(m=j+1;m<=i;m++)
if(a[j]+a[m]==10||abs(a[j]-a[m])==10)
n++;
}
printf("%d",n);
}
心得
- 求绝对值用函数 abs()