自认为作为程序员来说,对语言的掌握是必须的,然而更重要的是算法。
以下两个程序都是实现一个问题,思路大致相似,然结果却天差地别。这也许给我们编程以启示。
题目:
我们称由自1到n的连续自然数之和为三角数。如第七个三角数为:1+2+3+4+5+6+7=28;
现在我们要求第一个因数个数大于500的三角数(即该三角数最小)。
程序一:
public class P12 {
public static void main(String args[]){
int start = 250,count = 0;
long result;
long beg = System.currentTimeMillis();
while(true){
result = start * (start + 1)/2;
for(int i =1;i <Math.sqrt(result)+1 + 1;i++ ){
if(result % i == 0)
count ++;
}
if(count>=250)
break;
else{
start ++;
count = 0;
}
}
System.out.println(result);
long end = System.currentTimeMillis();
System.out.println((end - beg)+"ms");
}
}
程序一结果:
76576500
3605ms
程序二:
public class P12 {
/** Creates a new instance of FactorCount */
public P12(int limit) {
int cnt = 0;
for (int i = 1; cnt <= limit; i++){
if (i % 2 == 0) cnt = count(i / 2) * count (i+1);
else cnt = count(i) * count((i+1)/2);
// System.out.println("" + i + "\t" + cnt);
if (cnt > 500)
answer = i;
}
}
int answer = 0;
int count(int n) {
int result = 0;
for (int i = 1; i*i <= n; i++){
if (n % i == 0) {
result+=2;
if (n / i == i)
result--;
}
}
return result;
}
int getAnswer(){return answer;}
public static void main(String[] args){
long start = System.currentTimeMillis();
int n = new P12(500).getAnswer();
long stop = System.currentTimeMillis();
System.out.println("" + n + "\t"+ n*(n+1)/2 + "\tTime: " + (stop-start) + "ms");
}
}
程序二结果:
12375 76576500 Time: 25ms
分享到:
相关推荐
1. **综合题**:覆盖模-数混合电路设计,涉及到单片机和可编程逻辑器件的应用; 2. **专业方向题**:侧重某一特定领域,如电子信息、计算机、通信、自控、电子技术应用等; 3. **基础电路题**:侧重于模拟电路、数字...
每一道题目的设计都经过精心策划,旨在测试选手们的逻辑思维、创新能力和快速解决问题的能力。解题过程不仅仅是编写代码,更是对问题本质的理解和复杂问题简化的过程。 从1992年至2008年,这十几年间,ACM/ICPC的...
此题考察的是编程能力和数学逻辑能力。题目描述了两种微生物X和Y,在特定条件下的数量变化规律,要求计算60分钟后Y的数量。 **背景介绍:** - X微生物出生后每隔3分钟分裂一次,数量翻倍。 - Y微生物出生后每隔2...
优秀的程序员不仅需要精通编程语言和算法,还需要具备将复杂问题简单化、快速找到解决方案的能力。在面试中,应聘者能够灵活运用逻辑技巧,不仅能够给面试官留下深刻的印象,而且能够证明自己在工作中遇到挑战时能够...
每一道题目的解析都详尽地阐述了解题思路、关键算法以及代码实现,这对于初学者理解并掌握高级编程技巧极具价值。 通过研究这些题目和解析,你可以: 1. **深化算法理解**:ACM竞赛中的问题往往需要运用巧妙的算法...
在编程竞赛的世界里,POJ(Problem Set of Peking University)是一个广受欢迎的在线判题系统,它为程序员提供了丰富的算法挑战。这份“POJ解题报告”包含了超过一百道题目的详细解答,涵盖了从基础到高级的各种算法...
1. **逻辑推理**:试题中提到的字母序列O,T,T,F的问题,这是一道逻辑推理题,考察的是对模式识别和规律分析的能力,通常在软件开发面试中会出现类似的逻辑思维测试。 2. **数学问题**:16个数字填入16格方框的问题...
2015年全国大学数学建模竞赛的A题“太阳影子定位”是一道具有挑战性的题目,它不仅考察了参赛者的创新思维,还检验了他们解决实际问题的能力。在这项竞赛中,参赛者需要运用数学建模的方法来推导出一种可以定位太阳...
此外,作品还引入了一些有趣的例子来解释抽象概念,如通过一道著名的Google面试题——如何向一位不懂数据库的老太太讲解什么是数据库——来说明深入浅出的重要性。 #### 三、技术亮点 - **C#与Flash的交互**:虽然...
总的来说,“TwentyFour”游戏不仅是一道有趣的编程题,也是提升我们算法设计能力的良好实践。它让我们在编码的过程中思考数学的逻辑性和计算机的效率,同时激发我们去探索更复杂问题的解决方案。通过解决这样的问题...
"Cable master"可能是指其中的一道具体题目,通常这类题目会涉及数据结构和算法的应用,例如图论中的最短路径问题或网络流等。通过解决这样的问题,学习者可以提升对这些复杂算法的理解和应用能力。 接下来是"Spell...
这个问题源于十九世纪末的英国数学家刘易斯·卡罗尔(Lewis Carroll)的一道智力谜题。问题的核心是探讨在有限条件下如何通过策略性思考解决冲突和协作问题。 在这个问题中,我们有三个人物:两个传教士和一个食人...
- 每天坚持解决一道非水题,长期积累将有助于提升技能。 - 对于错过本科时期的同学,研究生阶段依然有机会。 2. **研究生阶段**: - 如果导师给予学生足够的自主权,利用好这段时间进行自我提升非常重要。 - ...
值得注意的是,这类问题往往对时间复杂度有着较为严格的要求,因此如何优化程序,使之在有限的时间内完成计算,是摆在选手面前的一道难题。一些经过精心优化的程序能够在极短的时间内,例如0.23秒内解决10个测试点,...
- **编程专家**:负责解决建模过程中所需的编程问题,能够熟练使用MATLAB、Lindo、Lingo或C/C++等工具。 - **资料搜集与模型构建者**:主要负责搜集相关信息,探索可能的建模方法,并参与模型构建。 #### 二、竞赛...
在备考阶段,高三学生需要关注每一个知识点,每一道习题的解题步骤,每一次模拟考试的总结反馈。只有对每一个细节都有深入的理解和掌握,才能在高考中取得理想的成绩。同样的道理,对于教师而言,设计教学方案时,...
【2020美赛A题】:美国...总的来说,2020年美赛A题"Hook Line and Sinker"是一道挑战性的综合问题,它将数学与实际应用紧密结合,旨在培养学生的创新思维和问题解决能力,同时也体现了数学在解决实际问题中的巨大潜力。
在求职过程中,面试无疑是一道至关重要的关卡,它不仅检验着求职者的专业技能,同时也考量个人的综合素质和对企业的适应度。本文将分享笔者在寻求职位过程中,参与华为、瑞晟、大华、海康、虹软、顺丰等多家知名企业...
10. **并发与同步**:虽然SICP主要关注理论,但它也为并发编程提供了一些启示。通过理解过程的独立性和交互,读者可以为未来处理多线程和分布式系统打下基础。 通过解决" sicp-exercies "中的习题,不仅可以深化对...