• 变种水仙花C,超详细思路+源代码


    前言:输出一个范围内的所有变种水仙花

    变种水仙花概念的介绍

    题目出之nowcoder,链接:变种水仙花
    变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。

    例如:
    655 = 6 * 55 + 65 *5

    1461 = 1461 + 1461 + 146*1
    求出 5位数中的所有 Lily Number。

    思路讲解

    我们首先可以看到第一个要求就是要先将一个数字拆成两个部分,之后计算相乘之和,然后再与原数字进行比较,相等就属于变种水仙花数字,将其输出即可
    那么我们首先要考虑的就是,怎么把一个五位数拆成两部分的所以情况全部实现,先从一个例子来观察
    98765 = 9 * 8765
    + 98 * 765
    + 987 * 65
    + 9876 * 5

    98765 % 10000 = 8765
    98765 / 10000 = 9

    98765 % 1000 = 765
    98765 / 1000 = 98

    98765 % 100 = 65
    98765 / 100 = 987

    98765 % 10 = 5
    98765 / 10 = 9876

    通过上面的规律我们来看,只需要将要判断的数字分别与10 100 1000 10000
    进行除数和取模运算,再将两者相乘,就可以得到把一个五位数拆成两部分的所以情况之和,那么接下来再与原数字i进行判断即可

    代码实现

    #include 
    int main()
    {
    	int i = 0;
    	for (i = 10000; i < 100000; i++)
    	{
    		int sum = 0;
    		int m = 10000;
    		int n = m;
    		while (n >= 10)
    		{
    			sum += (i / n) * (i % n);
    			n = n / 10;
    		}
    		if (sum == i)
    		{
    			printf("%d ", sum);
    		}
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    题目还是很简单的,要熟悉对循环的使用,欢迎大家留言

  • 相关阅读:
    Java 多线程分批同步数据
    【无标题】
    手把手教你安装python环境 Mac Windows
    HPA控制器
    M拷贝表行数据
    深入理解 Swift Combine
    想当设备管理师?满足这三个报考条件就可以
    Android12上修改erofs为ext4
    SpringBoot使用Docker并上传至DockerHub
    RabbitMQ基础
  • 原文地址:https://blog.csdn.net/Javaxaiobai/article/details/126160533