变种水仙花数 - 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+" "); } } } }
int main() { int g,g2; //从个位之前的位置拆 int s,s2; //从千位之前的位置拆 int b,b2; //从百位之前的位置拆 int q,q2; //从千位之前的位置拆 int sum; for (int num = 10000;num<100000;num++) { g = num % 10; g2 = num /10; s = num % 100; s2 = num /100; b = num % 1000; b2 = num/1000; q = num % 10000; q2 = num/10000; sum = g*g2 + s*s2 + b*b2 + q*q2; if(sum == num) { printf("%d ",num); } } return 0; }
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); } }