变种水仙花数 - 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,每两个数之间间隔一个空格。
#include <iostream> using namespace std; bool flower(int n) { int x = n, sum = 0, k = 10; while (n / k) { sum += (n / k) * (n % k); k *= 10; } if (sum == x) return true; return false; } int main() { for (int i = 10000; i <= 99999; i ++ ) { if (flower(i)) cout << i << ' '; } }
#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; }
//很容易就可以看懂的代码 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; }