我国经济的不断发展,小汽车已经越来越普及,有的家庭甚至已经有了两辆以上的
汽车。作为一个优秀的商业策划者,小 y 承担了车辆管理所的商业开发顾问,经过研究和调
查,他发现,有些家庭或情侣希望他们的汽车号码与手机号码一样,能有一定的关联。比如
“苏 DMM520”和“苏 DGG520”就一对不错的“亲情号码”,这种号码是可以卖大价钱的!小
y 作了一个定义:他把两个汽车号码后面的 5 个数字(或大写英文字母)加起来,如果和相
等,他就认为这是一对亲情号码。“苏 D74110”和“苏 D11074”就是一对亲情号码。当然,
如果汽车号码是 26 个大写英文字母,这时就按所谓的“三十六进制数”处理。比如“苏 DABC00”
和“苏 D0000X”也是一对亲情号码。
现在的问题是:车管所随机生成若干个汽车号码,请你找出中间都多少对亲情号码。
约定:由于小 y 所在地为江苏常州,所以汽车号码的格式都是“SD*****”。
输入格式:
第一行为 n,n<1000。
以下 n 行,每行一个汽车号码。
输出格式:
一行一个整数,表示其中亲情号码的对数。
注意:一个号码可能和其它多个号码是亲情号码。
如果 A 与 B 是亲情号码,那么 B 与 A 当然也是亲情号码,这只算一对。
输入样例:
6
SDMM520
SDGG520
SD74110
SD11074
SDABC00
SD0000Y
输出样例:
1
#include<stdio.h>
struct stu
{
char arr[7];
}size[1000]; 结构体数组处理车牌号的输入
int art(char arr1[], char arr2[])
{
int i,j,sum=0;
for(i=2;i<7;i++)
{
for(j=0;j<36;j++)
if(arr1[i]==arr2[j])
sum=sum+j;
}
return sum; //计算输入车牌号的和
}
int main()
{
int n,i,j,he=0;
int sum[1000]={0};
char arr2[36]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //三十六进制差不多意思
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s",size[i].arr);
sum[i]=art(size[i].arr,arr2); //调用art函数,把和存在sum数组中
}
for(i=0;i<n;i++) //遍历数组,若有值相等,he+1
{
for(j=i+1;j<n;j++) //j=i+1 处理重复问题
{
if(sum[i]==sum[j])
{
he++;
}
}
}
printf("%d",he);
return 0;
}