变种水仙花数 - 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;
}