自认为作为程序员来说,对语言的掌握是必须的,然而更重要的是算法。
以下两个程序都是实现一个问题,思路大致相似,然结果却天差地别。这也许给我们编程以启示。
题目:
我们称由自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格方框的问题...
此外,作品还引入了一些有趣的例子来解释抽象概念,如通过一道著名的Google面试题——如何向一位不懂数据库的老太太讲解什么是数据库——来说明深入浅出的重要性。 #### 三、技术亮点 - **C#与Flash的交互**:虽然...
总的来说,“TwentyFour”游戏不仅是一道有趣的编程题,也是提升我们算法设计能力的良好实践。它让我们在编码的过程中思考数学的逻辑性和计算机的效率,同时激发我们去探索更复杂问题的解决方案。通过解决这样的问题...
"Cable master"可能是指其中的一道具体题目,通常这类题目会涉及数据结构和算法的应用,例如图论中的最短路径问题或网络流等。通过解决这样的问题,学习者可以提升对这些复杂算法的理解和应用能力。 接下来是"Spell...
- 每天坚持解决一道非水题,长期积累将有助于提升技能。 - 对于错过本科时期的同学,研究生阶段依然有机会。 2. **研究生阶段**: - 如果导师给予学生足够的自主权,利用好这段时间进行自我提升非常重要。 - ...
- **编程专家**:负责解决建模过程中所需的编程问题,能够熟练使用MATLAB、Lindo、Lingo或C/C++等工具。 - **资料搜集与模型构建者**:主要负责搜集相关信息,探索可能的建模方法,并参与模型构建。 #### 二、竞赛...
在备考阶段,高三学生需要关注每一个知识点,每一道习题的解题步骤,每一次模拟考试的总结反馈。只有对每一个细节都有深入的理解和掌握,才能在高考中取得理想的成绩。同样的道理,对于教师而言,设计教学方案时,...
【2020美赛A题】:美国...总的来说,2020年美赛A题"Hook Line and Sinker"是一道挑战性的综合问题,它将数学与实际应用紧密结合,旨在培养学生的创新思维和问题解决能力,同时也体现了数学在解决实际问题中的巨大潜力。
10. **并发与同步**:虽然SICP主要关注理论,但它也为并发编程提供了一些启示。通过理解过程的独立性和交互,读者可以为未来处理多线程和分布式系统打下基础。 通过解决" sicp-exercies "中的习题,不仅可以深化对...
侯启明 -《信息论在信息学竞赛中的简单应用》 姜尚仆 -《模线性方程的应用——用数论方法解决整数问题》 金 恺 -《探寻深度优先搜索中的优化技巧——从正方形剖分问题谈起》 雷环中 -《结果提交类问题》 林希德 ...
3. 题目分析:每做完一道题,都要对解题思路进行总结,理解其背后的算法原理,这样可以加深记忆,提高解题速度。 4. 查阅资料:遇到难题时,可以参考其他人的解决方案,但要避免直接抄袭,要学会从中学习并转化为...