`
celebration
  • 浏览: 33982 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

平方数问题分析

阅读更多
平方数

给出包含M个数字的列表,和列表中所有数字的所有质因数。求出最长的子列表,使得子列表中所有数字的乘积是一个完全平方数。

输入

输入文件包含多组测试数据。第一行包含两个整数N , M ( 1 <= N <= 30 , 1 <= M <= 30000 ). N 是质因数的个数。接下来一行有N个整数,给出所有的质因数。然后一行包含M个整数,给出列表。

输入文件结束于N = M = 0.

输出

对于每组数据,输出最长子列表的两个位置坐标l r。l是该子列表在列表中的起始位置,r是结束位置。如果多种情况都满足子列表长度最大,输出l最小的一个。如果不存在这样的子列表输出“None”。

样例输入

3 4
2 3 5
4 9 25 6
3 4
2 3 5
6 6 3 3
0 0

样例输出

1 3
1 4

 

 

算法分析:

      看到这个题目,可能更多的人会想到用循环2层循环来求解,里层循环求几个数相乘的结果,然后判断它是否平方数,记录并判断是否最大序列。不过如果这样来做,那么给的质因数那行好像作用就不大了,而且还面临着一个比较麻烦的问题,就是判断一个数是不是平方数。还有就是如果给出的数字都比较大的话,很容易就溢出。然后有的人可能会说,那我可以用数组来相乘的结果。如果真是这样,那我也无语了。

      其实这个题目出的稍微简单了写,主要是给出了质因数那行。如果将该行去掉,也许好多人更多的想到的就是上面的解法。不过既然给出来了,那么就可以想想他们究竟是干什么用的。

 

解题思路:

      我们知道一个数如果是平方数,那么一定可以分解成同一个数字相乘,由此可以想到该平方数完全分解质因数后所有的质因数一定都是偶数个。如果想通了这点,那么这道题就迎刃而解了,给的质因数这行就是为我们解决判断一个数是否是平方数提供了思路。将上述思路中判断平方数的方法改下,将求乘积改为判断所求的几个数所有相同质因数是否都为偶数即可。如果都是偶数,那么该乘积就是平方数,否则就不是。其他的思路都是一样的。

 

题目总结:

      关于这道题目,给我们的其实就是求平方数的一个新思路。通过该题目,我们在平时做题的时候一定要思路灵活些,不能总是按照常规的方法去解题,应该多想想,多转换思路去思考,也许会发现有许多更好的方法。

 

题目不难,懒得写程序了,呵呵。

分享到:
评论
1 楼 knzeus 2008-11-12  
如果是非连续子序列也许就更好玩了。

相关推荐

    python 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?(源码)

    # 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? # 分析: # 假设该数为 x。 # 1、则:x + 100 = n2, x + 100 + 168 = m2 # 2、计算等式:m2 - n2 = (m + n)(m - n) = 168...

    python 实现完全平方数

    # 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? # 程序分析:因为168对于指数爆炸来说实在太小了,所以可以直接省略数学分析,用最朴素的方法来获取上限:

    一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

    一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是...

    蓝桥杯C/C++省赛:排它平方数

    小明正看着 203879 这个数字发呆。 原来,203879 * 203879 = 41566646641 这有什么神奇呢?...这里必须注意,不仅仅平方数需要用long long来存储,原数字也需要用long long来存储,如果是用int或者lo

    软件工程嵌入式开发之c语言经典程序总结

    题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后  的结果满足如下条件...

    C语言源程序100例

    案例1:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后  的结果满足如下...

    C语言经典编程100例

    一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后 ...输入某年某月某日,判断...

    80个C语言题+答案(源码).rar

    题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,...

    Leetcode 刷题(12)队列应用:广度优先搜索求完全平方数

    63. 完全平方数 难度:中等 题目分析:找一个和的可能拆分,在不清楚数学解析解的时候,就是一个状态空间搜索的问题。对于搜索问题,有两种策略。一种是广度优先搜索,即BFS;另一种是深度优先搜索,即DFS。这里...

    c 语言就一个数加上100是完全平方,加上168也是完全平方

    题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 程序分析: 假设该数为 x。 1、则:x + 100 = n2, x + 100 + 168 = m2 2、计算等式:m2 - n2 = (m + n)(m - n) =...

    c语言经典100例

    题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后  的结果满足如下条件,即是...

    主成分分析

    主成分分析(Principal Component Analysis,PCA), 将多个变量通过线性变换以选出较少个数重要变量的一种多元统计分析方法。又称主分量分析。在实际课题中,为了全面分析问题,往往提出很多与此有关的变量(或因素...

    Java经典编程题(附答案)

    题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足 如下...

    欧姆社学习漫画 漫画统计学之因子分析

    7.离差平方和、方差、标准差 第4章 主成分分析 1.主成分分析 2.主成分分析的注意事项 3.主成分分析的具体实例 4.变量的选择和第1主成分 5.第1主成分和综合实力 6.累积贡献度的标准 7.第2主成分及之后的主成分 8....

    主成份分析的MATLAB实现案例

    主成分分析(Principal Component Analysis,PCA), 将多个变量通过线性变换以选出较少个数重要变量的一种多元统计分析方法。又称主分量分析。在实际课题中,为了全面分析问题,往往提出很多与此有关的变量(或因素...

    求具有abcd=(ab+cd)2性质的四位数.rar_3025性质_husbando7z

    3025这个数具有一种独特的性质:将它平分为二段,即30和25,使之相加后求平方,即(30+25)2,恰好等于3025本身。请求出具有这样性质的全部四位数。 *题目分析与算法设计 具有这种性质的四位数没有分布规律,可以采用...

    概率论与数理统计-方差分析

    包括单因素方差分析和双因素方差分析的数学模型建立过程及计算过程,误差平方和的统计特性等

    C_语言经典算法100例非常经典.pdf

    题目:一个整数,它加上 100后是一个完全平方数, 再加上 168 又是一个完全平 方数,请问该数是多少? 1. 程序分析:在 10 万以内判断, 先将该数加上 100后再开方, 再将该数加上 268 后再开方,如果开方后的结果...

    matlab主成分分析代码

    在实际课题中,为了全面分析问题,往往提出很多与此有关的变量(或因素),因为每个变量都在不同程度上反映这个课题的某些信息。 主成分分析首先是由K.皮尔森(Karl Pearson)对非随机变量引入的,而后H.霍特林将此...

Global site tag (gtag.js) - Google Analytics