2685:打印水仙花数
总时间限制: 1000ms 内存限制: 65536kB
描述
打印出所有得“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身,例如,152是水仙花数,因为153=1×1×1+5×5×5+3×3×3。
输入
无输入。
输出
输出所有水仙花数,每行输出一个水仙花数。
样例输入
样例输出
来源
计算概论05

问题链接:Bailian2685 打印水仙花数
问题简述:(略)
问题分析
  原先的题解只是题解,不够透彻,参见参考链接。所以,这里重写题解。
  这是一个进制有关的问题,涉及如何从整数中把个位、十位和百位数字取出来。能取出这些位,再进行计算和判定就可以了。
解法一:直接计算
  用循环控制对三位数(100到999)的整数进行处理。对三位数,根据进制原理取出个位、十位和百位数字,求其立方和,再跟三位数做个比较。
解法二:枚举各位数字
  枚举三位数的每一位,也是一种做法,就不需要进制原理的知识了,参见解题程序。
解法三:通用编程
  通过宏定义实现程序的通用性,程序中使用了宏定义“#define N 3”。如果将宏定义改为“#define N 4”则可以计算出所有四位数等于其各位四次方之和的数,这些数是:
1634
8208
9474
  通用编程需要考虑的多一些,程序要略微复杂。通用编程是职业程序员必备的基本编程技巧。
程序说明:(略)
参考链接:Bailian2685 打印水仙花数【入门】
题记:职业程序员往往追求通用编程。

AC的C语言程序(解法一:直接计算)如下:

/* Bailian2685 打印水仙花数 */#include <stdio.h>int main(void)
{int d1, d10, d100, i;for (i = 100; i <= 999; i++) {d1 = i % 10;d10 = i / 10 % 10;d100 = i / 100;if (i == d100 * d100 * d100 + d10 * d10 * d10 + d1 * d1 * d1)printf("%d\n", i);}return 0;
}

AC的C语言程序(解法二:枚举各位数字)如下:

/* Bailian2685 打印水仙花数 */#include <stdio.h>int main(void)
{int i, j, k;for (i = 1; i <= 9; i++)for (j = 0; j <= 9; j++)for (k = 0; k <= 9; k++) {int num = i * 100 + j * 10 + k;if (num == i * i * i + j * j * j + k * k * k)printf("%d\n", num);}return 0;
}

AC的C语言程序(解法三:通用编程)如下:

/* Bailian2685 打印水仙花数 */#include <stdio.h>#define N 3int main(void)
{int start = 1, end = 9, i, j;for (i = 1; i < N; i++)start *= 10, end = end * 10 + 9;for (i = start; i <= end; i++) {int num = i, sum = 0;while (num) {int d = num % 10;num /= 10;int p = 1;for (j = 1; j <= N; j++)p *= d;sum += p;}if (i == sum) printf("%d\n", i);}return 0;
}

Bailian2685 打印水仙花数【进制+宏定义】相关推荐

  1. Bailian2685 打印水仙花数【入门】

    打印水仙花数 总时间限制: 1000ms 内存限制: 65536kB 描述 打印出所有得"水仙花数",所谓"水仙花数"是指一个3位数,其各位数字的立方和等于该数 ...

  2. 打印水仙花数--C语言

    使用函数输出水仙花数 水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身.例如:153=13+53+33. 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小 ...

  3. 一个数三位立方和相加等于本身_【题解信奥】打印水仙花数(粉丝求助)

    前言 本题来源于粉丝的求助. 关于粉丝求助的问题,我们会按照先后顺序来解答,并从公众号后台回复答案和解析. 打印水仙花数时间限制: 1000 ms    内存限制: 65536 KB [题目描述] 打 ...

  4. 怎么利用c 语言编程进行进制计算,编程达人 《汇编、C语言基础教程》第一章 进制1.1 进制的定义(连载)...

    第一章进制 进制跟我们生活是息息相关的,比如时钟是60进制.24进制,星期是7进制等,最常见的就是十进制了.而计算机也离不开进制,计算机是通过二进制进行操作和运算的. 我们为什么要学习进制? 方便我们 ...

  5. 7-6 打印水仙花数(10 分)

    7-6 打印水仙花数(10 分) 打印水仙花数.水仙花数是一个三位数,其各位数字的立方和与原数相等. 输出格式: 按递增顺序输出所有水仙花数,每个数输出占5列. 输出样例: 153 370 371 4 ...

  6. 编程基础 进制的定义,二进制、十进制、十六进制的相互转换

    文章目录 1. 进制的定义 2. 进制的规范 3. 进制的进位运算 3.1 十进制 3.2 二进制 3.3 八进制 3.4 十六进制 3.5 进制表 4. 进制的相互转换 4.1 二进制与十进制的相互 ...

  7. JavaScript打印水仙花数

    JavaScript打印水仙花数: <!DOCTYPE html> <html lang="en"> <head><meta charse ...

  8. JAVA打印水仙花数

    水仙花数是指:一个n位数( n23 ),它的每个位上的数字的n 次所谓的水仙花数是指:一个n位数(N23),它的每个位上的数字的n次幂之和等于它本身幂之和等于它本身. 例如:153,370,371,4 ...

  9. python输出水仙花数_python打印水仙花数(基础版)

    水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身. 例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方. 利用for ...

最新文章

  1. [MFC] MFC 打开HTML资源(用ID版,也可加载到自己的web控件上)
  2. 数制转换itoa atoi int转字符串 字符串转int string转int int转string
  3. 恩智浦NXP I.MX6ULL芯片介绍下载官网资料
  4. 大数据的数据采集数据处理_让我们处理大数据
  5. 小熊错误_新手爸妈第一年带娃时,很容易犯的7个错误,对照看看你中了没
  6. list删除null
  7. Java实现猜拳游戏
  8. 广东女子职业技术学院计算机应用技术,广东女子学院虚拟校园系统的构建与技术实现...
  9. 读书笔记-人月神话16
  10. 力扣:714.买卖股票的最佳时机含手续费
  11. 字符串的交叉合并c语言,C语言 两字符串的合并
  12. 银行业务知识冲正交易
  13. 次世代关卡制作流程:使用Unreal Engine 4
  14. 获取固定到任务栏的快捷方式的图标
  15. java十进制转化为二进制
  16. 特征选择——变量重要性排序
  17. 使用破解补丁激活过期的pycharm
  18. JVM基础 -> GC分代: MinorGC MajorGC FullGC Mixed GC
  19. Web常用的服务器软件整理(Win+Linux)
  20. Windows7 IIS7.5部署ASP网站

热门文章

  1. php 环信easyui_环信easeui集成:坑总结2018
  2. python棋盘覆盖_java实现的棋盘覆盖
  3. gradle——eclipse中安装与web项目创建
  4. iptables基本概念详解
  5. 游戏服务器的架构设计(一点参考,实际价值似乎不大……)
  6. 1加6投屏_1加6投屏_6月的早餐,1杯牛奶加燕麦,营养健康又美味,饱腹感很强...
  7. rtl8812au linux驱动下载,Ubuntu 16.04 安装 rtl8812au系列 (DWA-182) wireless adapter driver
  8. java.io.IOException: Server asks us to fall back to SIMPLE auth, but this client is confi的问题
  9. Linux下安装mysql(CentOS7)
  10. wxpython textctrl_wxPython控件学习之TextCtrl(一)单行文本框