poj1002 输出没问题,提交后wrong answer

##报错wrong answer


#include <iostream>
#include <string.h>
#include <algorithm>
#define max 100100
using namespace std;
void tiqu(char arr[max]) //提取arr中的有效字符
{
    char brr[max];
    for (int i = 0, j = 0; i < strlen(arr); i++)
    {
        if (arr[i] != '-')
        {
            brr[j] = arr[i];
            j++;
        }
    }
    memset(arr, 0, strlen(arr));
    for (int i = 0; i < strlen(brr); i++)
    {
        arr[i] = brr[i];
    }
}
char ys(char ch)
{
    char c;
    if (ch == 'A' || ch == 'B' || ch == 'C')
    {
        c = '2';
    }
    else if (ch == 'D' || ch == 'E' || ch == 'F')
    {
        c = '3';
    }
    else if (ch == 'G' || ch == 'H' || ch == 'I')
    {
        c = '4';
    }
    else if (ch == 'J' || ch == 'K' || ch == 'L')
    {
        c = '5';
    }
    else if (ch == 'M' || ch == 'N' || ch == 'O')
    {
        c = '6';
    }
    else if (ch == 'P' || ch == 'R' || ch == 'S')
    {
        c = '7';
    }
    else if (ch == 'T' || ch == 'U' || ch == 'V')
    {
        c = '8';
    }
    else if (ch == 'W' || ch == 'X' || ch == 'Y')
    {
        c = '9';
    }

    else
    {
        c = ch;
    }
    return c;
}
int main()
{
    long long n, len;
    long long temp, sum;
    char arr[max], sd[max];
    long long brr[max];
    while (cin >> n)
    {
        for (int i = 0; i < n; i++)
        {
            temp = 1;
            sum = 0;
            cin >> arr;
            tiqu(arr);
            for (int j = 0; j < strlen(arr); j++) //将电话号码存入数组
            {
                sd[j] = ys(arr[j]);
            }

            for (int i = strlen(sd) - 1; i > -1; i--)
            {
                sum += ((sd[i] - '0') * temp);
                temp *= 10;
            }
            brr[i] = sum;
            memset(arr, 0, strlen(arr));
            memset(sd, 0, strlen(sd));
        }
        sort(brr, brr + n); //排序 输入首尾地址 默认为从小到大
        int flag = 0;
        int count = 1, i;
        for (i = 1; i < n; i++)
        {
            if (brr[i] == brr[i - 1])
                count++;
            else
            {
                if (count > 1)
                {
                    printf("%03d-%04d %d\n", brr[i - 1] / 10000, brr[i - 1] % 10000, count);
                    //cout<<brr[i-1]/10000<<"-"<<brr[i-1]%10000<<" "<<count<<endl;
                    flag = 1;
                }
                count = 1;//更新
            }
        }
        if (count > 1)
        {
            printf("%03d-%04d %d\n", brr[i - 1] / 10000, brr[i - 1] % 10000, count);
            //cout<<brr[i-1]/10000<<"-"<<brr[i-1]%10000<<" "<<count<<endl;
            flag = 1;
        }
        if (flag == 0)
            cout << "No duplicates." << endl;
    }
    system("pause");
    return 0;
}

85~89行:数字相加时,没有考虑到Q和Z

            for (int i = strlen(sd) - 1; i > -1; i--)
            {
                sum += ((sd[i] - '0') * temp);
                temp *= 10;
            }

应判断当前字符是否为Q或Z,是Q或Z则不能相加