XTU-OJ 1328-数码和

题目描述

一个10进制数n在2∼16进制下可以得到的不同的数码和,求在这些数码和中出现次数最多的数码和。 比如20,

进制2345678910111213141516数码10100202110403226242220191817161514数码和2424586421098765

其中数码和2和4分别出现了3次,为最多出现次数。

输入

第一行是一个整数T(1≤T≤1000),表示样例的个数。 以后每行一个整数n(16≤n≤109)。

输出

依次输出各样例的结果,每个样例输出的第一行是最多的次数。

然后,按数码和值的升序依次输出最多次的数码和,每行输出一种。

每行先输出这个数码和的值,然后按进制的顺序输出出现这个数码和的进制,每个值之间用一个空格隔开。

样例输入

复制代码
3
17
20
1000000000

样例输出

复制代码
4
5 3 5 7 13
3
2 2 4 10
4 3 5 9
2
34 7 8

解题思路: 按步骤来,先把十进制数 n 转换成 2->16 进制的数的 数码和。在另外开一个标记数组 books,记录 该数码和 出现的次数。(n最大是 1e9,数码和最大也就100以内,我这里随便开了个长度 135,需要严谨点的可以自己去估一下)。记录出现的最大次数。

然后依次输出:最大次数、数码和、对应进制。

AC代码:

cpp 复制代码
#include <stdio.h>
#include <string.h>

int T,n,n0,i,j;
int maxNum;
int record[20],books[135];    // record[i][0] 保存 进制i的 数码和
void exchange()
{
    // 初始化
    maxNum = 0;
    memset(record,0,sizeof(record));
    memset(books,0,sizeof(books));
    // 2->16 进制转换
    for ( i = 2; i <= 16; i ++)
    {
        //   求各进制的 数码和
        n0 = n;
        while ( n0 )
        {
            record[i] += n0%i;
            n0 /= i;
        }
        books[record[i]] ++;
        if (maxNum < books[record[i]])      // 记录出现最多的 次数
            maxNum = books[record[i]];
    }
}
int main()
{
    scanf("%d",&T);
    while ( T --)
    {
        scanf("%d",&n);
        exchange();
        printf("%d\n",maxNum);
        for (i = 1; i < 135; i ++)
        {
            if (books[i] == maxNum)
            {
                printf("%d",i);                 // 输出 数码和
                for (j = 2; j <= 16; j ++)
                    if (record[j] == i)
                        printf(" %d",j);        // 输出 进制
                puts("");
            }
        }
    }
    return 0;
}
相关推荐
算AI5 小时前
人工智能+牙科:临床应用中的几个问题
人工智能·算法
我不会编程5556 小时前
Python Cookbook-5.1 对字典排序
开发语言·数据结构·python
owde7 小时前
顺序容器 -list双向链表
数据结构·c++·链表·list
第404块砖头7 小时前
分享宝藏之List转Markdown
数据结构·list
hyshhhh7 小时前
【算法岗面试题】深度学习中如何防止过拟合?
网络·人工智能·深度学习·神经网络·算法·计算机视觉
蒙奇D索大7 小时前
【数据结构】第六章启航:图论入门——从零掌握有向图、无向图与简单图
c语言·数据结构·考研·改行学it
A旧城以西7 小时前
数据结构(JAVA)单向,双向链表
java·开发语言·数据结构·学习·链表·intellij-idea·idea
杉之8 小时前
选择排序笔记
java·算法·排序算法
烂蜻蜓8 小时前
C 语言中的递归:概念、应用与实例解析
c语言·数据结构·算法
OYangxf8 小时前
图论----拓扑排序
算法·图论