变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。
例如:
655 = 6 * 55 + 65 * 5
1461 = 1*461 + 14*61 + 146*1
求出 5位数中的所有 Lily Number。
变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。
例如:
655 = 6 * 55 + 65 * 5
1461 = 1*461 + 14*61 + 146*1
求出 5位数中的所有 Lily Number。
无
一行,5位数中的所有 Lily Number,每两个数之间间隔一个空格。
//很容易就可以看懂的代码
import java.util.*;
public class Main{
     public static void main(String[] args) {
        for (int i = 10000;i < 100000;i++) {
            int sum = 0;
            String s = Integer.toString(i);
            for (int j = 1; j < 5; j++) {
                int pre = Integer.parseInt(s.substring(0,j));
                int end = Integer.parseInt(s.substring(j,s.length()));
                sum+= pre*end;
            }
            if (sum == i){
                System.out.print(i+" ");
            }
        }
    }
} import java.util.*;
public class Main
{
    public static void main(String [] args)
    {
            //不用输入,直接给所有5位数
            for(int i=10000;i<100000;i++){
                //转成字符串
                String str = Integer.toString(i);
                //再将数组切割成不同大小乘积
                int a1 = Integer.parseInt(str.substring(0,1));
                int a2 = Integer.parseInt(str.substring(1));
                int b1 = Integer.parseInt(str.substring(0,2));
                int b2 = Integer.parseInt(str.substring(2));
                int c1 = Integer.parseInt(str.substring(0,3));
                int c2 = Integer.parseInt(str.substring(3));
                int d1 = Integer.parseInt(str.substring(0,4));
                int d2 = Integer.parseInt(str.substring(4));
                //判断
                if(i==a1*a2+b1*b2+c1*c2+d1*d2){
                    System.out.printf(i+" ");
                }
            }
        
    }
} public class Main {
    public static void main(String[] args) {
        int a,b,c,d,e;
        int r1,r2,r3,r4;
        for (int i = 10000; i < 99999; i++) {
            r1=(i/10000)*(i%10000);
            r2=(i/1000)*(i%1000);
            r3=(i/100)*(i%100);
            r4=(i/10)*(i%10);
            if(i==(r1+r2+r3+r4)){
                System.out.print(i);
                System.out.print(" ");
            }
        } Java的通过代码全是直接输出 真丢人#include <stdio.h>
#include <math.h>
int main(){
    int a;
    int i;
    int part1, part2;
    int sum = 0;
    for (a = 10000; a < 100000; a++){
        for(i=1;i < 6; i++)
        {
            part1 = a/(int)pow(10,i);
            part2 = a%(int)pow(10,i);
            sum = sum + part1*part2;
        }
        if (a == sum){
            printf("%d ",a);
        }
        sum = 0;
    }
    return 0;
} for n in range(10000,99999): m=n n=str(n) for i in range(1,len(n)): m-=int(n[:i])*int(n[i:]) if m==0: print(n,end=' ')
#include<iostream>
using namespace std;
bool Is_lily(int i)
{
    int sum=0;
    for(int j=10;j<=10000;j*=10)
        sum+=(i/j)*(i%j);
    if(sum==i)
        return true;
    else
        return false;
}
int main()
{
     for(int i = 10000;i<100000;i++)
     {
         if(Is_lily(i))
             cout<<i<<" ";
     }
    cout<<endl;
    return 0;
}
 #include<stdio.h>
int main(){
    int i1,i2,i3,i4,i5,new_num,k;
    for(int i=10000;i<=99999;i++){
        k = 10;
        new_num = 0;
        for (int j=1;j<=4;j++){
            new_num +=  (i/k)*(i%k);   
            k *= 10;
        }
        if (i == new_num) printf("%d ",i);
    }
} #include<stdio.h>
int main(){
    long long i , one , two , three , four , remain , result;
    for( i = 10000 ; i <= 99999 ; i++)     //遍历所有5位数
    {
        //scanf("%lld",&i);
        result = 0;
        one = i % 10;                      //后1位,9
        remain = ( i - one ) / 10;         //前4位,9999
        result = result +remain * one;     //乘积之和,9999*9
        two = i % 100;                     //后2位,99
        remain = ( i - two ) / 100;        //前3位,999
        result = result + remain * two;    //乘积之和,
        three = i % 1000;                  //后3位,999
        remain = ( i - three ) / 1000;     //前2位,99
        result = result + remain * three;  //乘积之和,
        four = i % 10000;                  //后4位,9999
        remain = ( i - four ) / 10000;     //前1位,9
        result = result + remain * four;   //乘积之和,
        //printf("%lld\n",9999*9+99*999+999*99+9999*9);
        //printf("%lld %lld\n",result,i);
        if( result == i ) printf("%lld ",i); //输出变种水仙花数
        
    }
    return 0;
} #include <stdio.h>
int main()
{
	int i = 0;
	int num1 = 0;
	int num2 = 0;
	for (i = 10000; i < 100000; i++)
	{
		int n = 4;
		int j = 10;
		int sum = 0;
		while (n--)
		{
			num1 = i % j;
			num2 = i / j;
			sum += num1 * num2;
			j *= 10;
		}
		if (i == sum)
		{
			printf("%d ", i);
		}
	}
	return 0;
}