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;
}
相关推荐
疯狂打码的少年18 小时前
【数据结构】顺序表 vs 链表的对比与选择
数据结构·笔记·链表
坚持编程的菜鸟1 天前
模拟实现memmove
c语言·算法·模拟实现memmove
wabs6661 天前
关于图论【最短路径之Dijkstra算法(堆优化版)|卡码网47.参加科学大会的思考】
数据结构·算法·图论·优先级队列·邻接表·小顶堆·卡码网
坚持编程的菜鸟1 天前
编写判断大小端程序
c语言·算法·判断大小端
papaofdoudou1 天前
判断排列逆序奇偶性的乘积判别法(范德蒙德符号法)
人工智能·算法
linux-hzh1 天前
百日算法修炼 · Day 03
java·算法
问商十三载1 天前
RAG 检索效果差怎么排查?2026 五层诊断法完整指南
开发语言·人工智能·windows·python·算法
嵌入式老牛1 天前
三相电气量采集模块设计(三)非同步采样时的精度提升
算法·精度·计量
今天AI了吗1 天前
精细化落地教程:TimechoAI调参标准+数据清洗规范+误差归因+阈值适配全维度指南
大数据·人工智能·算法
zephyr051 天前
从递归到迭代:二叉树非递归前中后序遍历详解
算法