码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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代码:

    1. #include
    2. #include
    3. int T,n,n0,i,j;
    4. int maxNum;
    5. int record[20],books[135]; // record[i][0] 保存 进制i的 数码和
    6. void exchange()
    7. {
    8. // 初始化
    9. maxNum = 0;
    10. memset(record,0,sizeof(record));
    11. memset(books,0,sizeof(books));
    12. // 2->16 进制转换
    13. for ( i = 2; i <= 16; i ++)
    14. {
    15. // 求各进制的 数码和
    16. n0 = n;
    17. while ( n0 )
    18. {
    19. record[i] += n0%i;
    20. n0 /= i;
    21. }
    22. books[record[i]] ++;
    23. if (maxNum < books[record[i]]) // 记录出现最多的 次数
    24. maxNum = books[record[i]];
    25. }
    26. }
    27. int main()
    28. {
    29. scanf("%d",&T);
    30. while ( T --)
    31. {
    32. scanf("%d",&n);
    33. exchange();
    34. printf("%d\n",maxNum);
    35. for (i = 1; i < 135; i ++)
    36. {
    37. if (books[i] == maxNum)
    38. {
    39. printf("%d",i); // 输出 数码和
    40. for (j = 2; j <= 16; j ++)
    41. if (record[j] == i)
    42. printf(" %d",j); // 输出 进制
    43. puts("");
    44. }
    45. }
    46. }
    47. return 0;
    48. }

  • 相关阅读:
    Open3D Ransac算法分割多个点云平面
    cad转换成pdf怎么转?
    Chromium 通过IDL方式添加扩展API
    php-fpm详解
    微软AI系列 如何使用微软及相关产品来实现 文字转语音
    一文学会Spring,Spring最简单的入门教程(万字好文)
    C语言编程规范
    git 删除远程标签tag【杂记】
    【竞赛题目】木块(C语言详解)
    Java从控制台接收用户输入的一行英文句子,把句子的最前面两个单词移到句子的最后面去,并整理句子的大小写及标点符号,将新的句子输出
  • 原文地址:https://blog.csdn.net/Jay_is_Chou/article/details/133911264
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号