水仙花數 --JAVA
阿新 • • 發佈:2018-12-19
題目:
春天是鮮花的季節,水仙花就是其中最迷人的代表,數學上有個水仙花數,他是這樣定義的: “水仙花數”是指一個三位數,它的各位數字的立方和等於其本身,比如:153=1^3+5^3+3^3。 現在要求輸出所有在m和n範圍內的水仙花數。
Input
輸入資料有多組,每組佔一行,包括兩個整數m和n(100<=m<=n<=999)。
Output
對於每個測試例項,要求輸出所有在給定範圍內的水仙花數,就是說,輸出的水仙花數必須大於等於m,並且小於等於n,如果有多個,則要求從小到大排列在一行內輸出,之間用一個空格隔開; 如果給定的範圍內不存在水仙花數,則輸出no; 每個測試例項的輸出佔一行。
Sample Input
100 120 300 380
Sample Output
no 370 371
思路:
這道題很簡單,給出了水仙花數的概念,這要我們只需要按照給出的概念進行求取就可以了,這道題還考了對於一個數的分解;
注意一下輸出格式就好了。
程式碼如下:
JAVA:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input=new Scanner(System.in); while(input.hasNext()) { int n=input.nextInt(); int m=input.nextInt(); int flag=0; for(int i=n;i<=m;i++) { int a=i%10; int b=i/10%10; int c=i/100; if(a*a*a+b*b*b+c*c*c==i) { flag++; if(flag==1) System.out.print(i); else System.out.print(" "+i); } } if(flag==0) System.out.print("no"); System.out.println(); } } }
C++:
#include<stdio.h> int main() { int m,n; while(~scanf("%d%d",&m,&n)) { int a,b,c,flag=0; for(int i=m; i<=n; i++) { a=i/100; b=i/10%10; c=i%10; if(a*a*a+b*b*b+c*c*c==i) { if(flag==1) printf(" %d",i); else { printf("%d",i); flag=1; } } } if(flag==0) printf("no"); printf("\n"); } return 0; }