【数字】求特定三位数

将数字 1~ 9 分成 3 个三位数,要求第 2 个三位数是第1个三位数的两倍,第3个三位数是第1个的三倍。即假定m为第 1个三位数,则第2个恰好为2m, 第3个为 3m,请输出这几个三位数。

输入:

第一个三位数的数字

输出:

满足题目条件的所有三位数

样例:

序号 测试输入 期待的输出 额外进程
1 2↵ 219,438,657↵
273,546,819↵
0
2 9↵ 0,0,0↵ 0

思路

(* ^ ▽ ^ *)猜猜最简单的方法是什么?

代码·离大谱

#include<stdio.h>  int main()
{  int n;  scanf("%d",&n);  switch(n)  {  case 1:  printf("192,384,576\n");  break;  case 2:  printf("219,438,657\n273,546,819\n");  break;  case 3:  printf("327,654,981\n");  break;  default:  printf("0,0,0\n");  break;  }
}

还可以直接用一个字符串数组(* ^ ▽ ^ *)

真·思路

首先分析将数字 1~ 9 分成 3 个三位数,这意味着我们需要判断数字是否重复
其次分析假定m为第 1个三位数,则第2个恰好为2m, 第3个为 3m,这需要我们判断三个数的比例关系
事实上,根据比例关系,只要我们有了第一个数,就自然能得到剩下的两个数,所以我们得到了:

代码·河狸1

#include <stdio.h>
#include <math.h>int OK(int a)
{int i,j,x,y;for (i = 9; i > 0; i--){x = (a / (int)pow(10, i)) % 10;for (j = i - 1; j > 0; j--){y = (a / (int)pow(10, j)) % 10;if (x == y) return 0;}}return 1;
}int main()
{int n,n2,n3,flag = 0;scanf("%d", &n);for (int i = 100 * n; i < 100*(n + 1); i++){n2 = 2 * i;n3 = 3 * i;if (n3 > 999) break;else if (OK(i * 1000000 + n2 * 1000 + n3)){printf("%d,%d,%d\n", i, n2, n3);flag = 1;}}if (!flag) printf("0,0,0\n");return 0;
}

课外思考

but!老生常谈的问题——好多循环啊,不爽,就不能简单点?
其实是可以的,但是这需要一点点超纲的知识——深度搜索
简单来讲,就是把我们用过的数字都标记上,每次尝试都if一下这个数字没有用过,这样就不会有重复数字,然后把结果判断一下:

代码·DFS

#include <stdio.h>int vis[10] = { 0 };
int ans[10] = { 0 };void DFS(int p)
{if (p < 10){for (int i = 1; i < 10; i++){if (!vis[i]){vis[i] = 1;ans[p] = i;DFS(p + 1);vis[i] = 0;}   }}if (p == 10){if (2 * (ans[1] * 100 + ans[2] * 10 + ans[3]) == ans[4] * 100 + ans[5] * 10 + ans[6] && 3 * (ans[1] * 100 + ans[2] * 10 + ans[3]) == ans[7] * 100 + ans[8] * 10 + ans[9]){printf("%d%d%d,%d%d%d,%d%d%d\n", ans[1], ans[2], ans[3], ans[4], ans[5], ans[6], ans[7], ans[8], ans[9]);ans[0] = 1;}else return;}
}int main()
{int n,n2,n3,flag = 0;scanf_s("%d", &n);vis[n] = 1;ans[1] = n;DFS(2);if (!ans[0]) printf("0,0,0\n");return 0;
}

【数字】求特定三位数相关推荐

  1. 求一个三位数 其值等于其各位阶乘之和 c语言,求一个三位数,其值等于其各位阶乘之和...

    写在前面: 题解是对具体题目的编程实现,不会具体讲解C语言语法.请先大致学习好语法,自己敲敲代码后再看题解(上来就直接看题解的习惯不好哟~).在每一题的题解之前,会列出本题涉及到的语法知识供参考,可以 ...

  2. C语言基础——求一个三位数的个位十位百位

    #include <stdio.h>// 求一个三位数的个位十位百位 #include<math.h> int main(void) {int num;printf(" ...

  3. 用Java求一个三位数,该三位数是与其每位数字的阶乘之和

    题目:一个三位数,该三位数与其每位数字的阶乘之和 代码: public class TestSum {public static void main(String[] args) {int a, b, ...

  4. 求水仙花数字(指一个三位数的各位数立方和等于该数字本身)

    题目 水仙花数是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1x1x1 + 5x5x5 + 3x3x3. 现在要求输出所有三位数的水仙花数. 思路 1. 循环得到100~999的整数 ...

  5. 求一个三位数 其值等于其各位阶乘之和 c语言,求这样一个三位数,该三位数等于其每位数字的阶乘之和...

    根据题目,即求abc=a!+b!+c! 下面我们设计算法: 设三位数为n,取出每一位数分别放在a.b.c中 通过定义形参,求每位数的阶乘,通过函数返回值返回 主函数中,调用返回值,每一位的阶乘相加与该 ...

  6. C语言:水仙花数(daffodil),求出三位数中所有水仙花数

    水仙花数(C语言) 文章目录 水仙花数(C语言) 前言 一.题目 二.解题思路 代码 运行结果 总结 ***根据水仙花数满足的条件找出需要求的对象,这里是各位上的位数.*** 前言 刘汝佳算法书< ...

  7. 用MATLAB编程求出三位数中全部的水仙花数

    代码: m=100:999; m1=rem(m,10);  %求个位数 m2=rem(fix(m/10),10); %求十位数 m3=fix(m/100);   %求百位数 k=find(m==m1. ...

  8. 编程练习:既是完全平方数又有两位数字相同的三位数

    思路:取得整数的个十百位上的数字,有两个相等即可:i的范围可以进一步缩小 //三位整数中,既是完全平方数,又有两位数字相同的数 #include<stdio.h> int main(){i ...

  9. Java- 求⼀个三位数,该三位数等与其每位数字的阶乘之和

    求⼀个三位数,该三位数等与其每位数字的阶乘之和. import java.util.Scanner; public class Demo {public static void main(String ...

最新文章

  1. 力科示波器 matlab,力科周末文章四周年180期合集目录
  2. 借助亚马逊S3和RapidMiner将机器学习应用到文本挖掘
  3. tf.nn.conv2d 与tf.layers.conv2d的区别
  4. KMP(字符串匹配)算法 O(m+n)
  5. oracle 9i乱码,oracle 9i sql*plus worksheet乱码问题
  6. 提升普适性,阿里云官方SDK发布支持Go语言SDK
  7. mybatis-plus -- mapper中foreach循环操作(新增,或修改)
  8. python打开txt文件找不到-Docker Python脚本找不到文件
  9. python3 Unicode字符与16进制编码互转(单个字符)
  10. 小程序毕设作品之微信小程序点餐系统毕业设计(6)开题答辩PPT
  11. AI换脸正在发酵,有人抖音玩“蚂蚁呀嘿”,有人已经创业拿到300万美元融资...
  12. 陈式太极拳式名考释、动作、着法要领说明
  13. oracle返回工作日的函数,oracle计算一个日期加上指定工作日(排除周六周日和一系列节假日)时间...
  14. 单纯版九九乘法口诀表
  15. pat乙级部分题目代码汇总
  16. Redis控制调用频率
  17. java 汉字是多少字节_面试官:Java 中有几种基本数据类型是什么?各自占用多少字节?...
  18. 毛球科技观察院|基于区块链技术重新构想电力市场
  19. 4.2 进阶题 - B 相生相克
  20. PAT日志 1042

热门文章

  1. 安卓模拟器刷小米系统_小米安卓模拟器|小米手游模拟器下载 v1.0.0.8 电脑版_小皮网...
  2. 公务员没考上……我做了投资
  3. 苹果手机永久删除的照片怎么恢复?
  4. 利用mathematica画多个函数图像
  5. oracle 临时表空间语句,oracle的临时表空间
  6. 《神经科学:探索脑》学习笔记(第1章 神经科学导论)
  7. html知识点总结1
  8. vscode怎样设置成中文
  9. 我花了3天时间整理出这5款黑科技小程序,值得你们玩上一整天
  10. wifi的 2.4G 和5G