一道C++题目,求这段代码哪里错了,求什么你懂的,呵呵~

偶数 or 奇数
时间限制: 1 Sec 内存限制: 128 MB
题目描述
编程班老师搞了一个有 N (1 <= N <= 100) 个正整数 I (1 <= I <= 10^60) 的表,叫 同学们去统计每个数里面数字(0,1,2,3,4,5,6,7,8,9)(注 0 为偶数)的奇偶数 字个数。写一个程序读入 N 个整数,统计每个整数的数字奇偶个数。
输入
第 1 行: 一个单独的整数: N
第 2 到第 N+1 行: 每行一个长长(小于等于 60 位)的整数,需要统计数字奇偶个数。
输出
1..N 行: 第 j 行根据第 j 个整数输出奇数个数与偶数个数。
样例输入
2
1024
5931
样例输出
1 3
4 0

#include<bits/stdc++.h>
using namespace std;
long long a[105],b[105],c[105];
int qiujishu(int x){
    int jishu=0;
    while(x){
        if(x%10%2!=0)jishu++;
        x=x/10;
    }
    return jishu;
}
int qiuoushu(int x){
    int oushu=0;
    while(x){
        if(x%10%2==0)oushu++;
        x=x/10;
    }
    return oushu;
}
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        b[i]=qiujishu(a[i]);
        c[i]=qiuoushu(a[i]);
    }
    for(int i=1;i<=n;i++){
        cout<<b[i]<<" "<<c[i]<<endl;
    }
    return 0;
}

代码本身没有什么问题
关键是10^60
因此long long可能也不够,应该用字符串。

#include<iostream>
#include<string>
using namespace std;
string a[105];
int b[105],c[105];
int qiujishu(string x){
    int jishu=0;
    for(int i = 0; x.c_str()[i]; i++){
        if ((x.c_str()[i] - '0') % 2 == 1) jishu++;
    }
    return jishu;
}
int qiuoushu(string x){
    int oushu=0;
    for(int i = 0; x.c_str()[i]; i++){
        if ((x.c_str()[i] - '0') % 2 == 0) oushu++;
    }
    return oushu;
}
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        b[i]=qiujishu(a[i]);
        c[i]=qiuoushu(a[i]);
    }
    for(int i=1;i<=n;i++){
        cout<<b[i]<<" "<<c[i]<<endl;
    }
    return 0;
}