


两个数组,具体看AC代码
#include<stdio.h>
int main(){
int T;
scanf("%d",&T);
while(T--){
int n;
scanf("%d",&n);
int num[128]={0};//i出现了num[i]次
int rank[20]={0};
for(int b=2;b<17;b++){
int t=n;
int sum=0;
while(t){
sum=sum+t%b;
t=t/b;
}
num[sum]++;
rank[b]=sum;//b进制的数码和是rank[b]
}
int max=0;
for(int i=0;i<128;i++){
if(max<num[i]) max=num[i];
}
printf("%d\n",max);
for(int i=0;i<128;i++){
if(num[i]==max){
printf("%d ",i);
for(int j=0;j<17;j++){
if(rank[j]==i){
printf("%d ",j);
}
}
printf("\n");
}
}
}
}