【心得】切忌过早过度设计【编码】水仙花数-2016.07.30
过早过度的设计很可能导致意想不到的事倍功半的效果。
先看一个很简单的题目:
水仙花数
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范围内的水仙花数。
输入
输入数据有多组,每组占一行,包括两个整数m和n(100int 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 n) // break; if(a == n3) { if(b > n2) { break; } } num +=(b*b*b); for(c = m1;(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::coutusing 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来,然后逐步优化。
c++
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!