過早過分的設計極可能致使意想不到的事倍功半的效果。ios
水仙花數
Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)測試
Problem Description:優化
春天是鮮花的季節,水仙花就是其中最迷人的表明,數學上有個水仙花數,他是這樣定義的: 「水仙花數」是指一個三位數,它的各位數字的立方和等於其自己,好比:153=1^3+5^3+3^3。 如今要求輸出全部在m和n範圍內的水仙花數。
輸入spa
輸入數據有多組,每組佔一行,包括兩個整數m和n(100<=m<=n<=999)。
輸出設計
對於每一個測試實例,要求輸出全部在給定範圍內的水仙花數,就是說,輸出的水仙花數必須大於等於m,而且小於等於n,若是有多個,則要求從小到大排列在一行內輸出,之間用一個空格隔開; 若是給定的範圍內不存在水仙花數,則輸出no; 每一個測試實例的輸出佔一行。
樣例輸入code
100 120 300 380
樣例輸出ip
no 370 371
#include <iostream> int main(){ int m,n; while(std::cin>>m>>n){ int m1 = m%10; //個 int m2 = (m/10)%10; //十 int m3 = m/100; //百 int n1 = n%10; int n2 = (n/10)%10; int n3 = n/100; int a = m3; //1-9 //bai int b = m2; //0-9 //shi int c = m1; //0-9 //ge int num = 0; int cnt = 0; for(a = m3; a<=n3; ++a ){ num =(a*a*a); for(b = m2; (num<=n)&&(b<=9); ++b){ //if(num > n) // break; if(a == n3) { if(b > n2) { break; } } num +=(b*b*b); for(c = m1;(num<=n)&&(c <= 9); ++c){ //if(num > n) // break; if((b == n2)&&(a == n3)) { if(c > n3) { break; } } num+=(c*c*c); if(num == (a*100+b*10+c)){ if(cnt != 0){ std::cout<<" "; } std::cout<<num; ++cnt; } num -=(c*c*c); } num -=(b*b*b); } num = 0; } if(cnt == 0) { std::cout<<"no"; } } return 0; }
#include <iostream> using namespace std; int main () { int a,b; while(cin>>a>>b){ int i,j,k,n; int cnt = 0; for (n=a;n<=b;n++) { i=n/100; j=n/10-i*10; k=n%10; if (n == i*i*i + j*j*j + k*k*k) { if(cnt != 0){ std::cout<<" "; } cout<<n; ++cnt; } } if(cnt == 0) { std::cout<<"no"; } } return 0; }
寫代碼和作許多事情同樣,一開始先不要想着很高的標準和效率。每每是先按照本身的水平寫出一個demo來,而後逐步優化。ci