平方数
给出包含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层循环来求解,里层循环求几个数相乘的结果,然后判断它是否平方数,记录并判断是否最大序列。不过如果这样来做,那么给的质因数那行好像作用就不大了,而且还面临着一个比较麻烦的问题,就是判断一个数是不是平方数。还有就是如果给出的数字都比较大的话,很容易就溢出。然后有的人可能会说,那我可以用数组来相乘的结果。如果真是这样,那我也无语了。
其实这个题目出的稍微简单了写,主要是给出了质因数那行。如果将该行去掉,也许好多人更多的想到的就是上面的解法。不过既然给出来了,那么就可以想想他们究竟是干什么用的。
解题思路:
我们知道一个数如果是平方数,那么一定可以分解成同一个数字相乘,由此可以想到该平方数完全分解质因数后所有的质因数一定都是偶数个。如果想通了这点,那么这道题就迎刃而解了,给的质因数这行就是为我们解决判断一个数是否是平方数提供了思路。将上述思路中判断平方数的方法改下,将求乘积改为判断所求的几个数所有相同质因数是否都为偶数即可。如果都是偶数,那么该乘积就是平方数,否则就不是。其他的思路都是一样的。
题目总结:
关于这道题目,给我们的其实就是求平方数的一个新思路。通过该题目,我们在平时做题的时候一定要思路灵活些,不能总是按照常规的方法去解题,应该多想想,多转换思路去思考,也许会发现有许多更好的方法。
题目不难,懒得写程序了,呵呵。
分享到:
相关推荐
# 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? # 分析: # 假设该数为 x。 # 1、则:x + 100 = n2, x + 100 + 168 = m2 # 2、计算等式:m2 - n2 = (m + n)(m - n) = 168...
问题三:一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少? 这个问题可以使用数学计算和循环来解决。我们可以使用循环来遍历所有可能的整数,然后判断每个数是否满足条件...
本题目聚焦于一个具体的数学问题:如何快速地计算出一个给定正整数可以表示为几个平方数之和的最少数量。这不仅考验了选手对于数学理论的理解,还要求能够高效地实现算法,以应对大范围的数据输入。 #### 题目解析 ...
# 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? # 程序分析:因为168对于指数爆炸来说实在太小了,所以可以直接省略数学分析,用最朴素的方法来获取上限:
在准备JavaScript面试,特别是涉及到LeetCode挑战和动态规划问题时,第279题“完全平方数”是一个常被提及的题目。这个题目的重点在于理解动态规划的概念,并且运用它来解决数学上的计算问题。动态规划是一种强大的...
小明正看着 203879 这个数字发呆。 原来,203879 * 203879 = 41566646641 这有什么神奇呢?...这里必须注意,不仅仅平方数需要用long long来存储,原数字也需要用long long来存储,如果是用int或者lo
问题要求找到一个整数,当这个整数加上100后是完全平方数,再加168之后,依然得到一个完全平方数。这是一个典型的数值分析问题,可以通过编程来解决。以下是这个问题的相关知识点: 1. **完全平方数**:一个数如果...
问题的核心是寻找使正整数n等于若干个完全平方数之和的最小数量的完全平方数。在编程领域,这样的问题通常涉及到数论和动态规划的算法解决方案。 描述部分与标题一致,强调了问题的目标:找到最少数量的完全平方数...
在本压缩包中,我们关注的是一个Python编程与LeetCode面试相关的主题——“有效的完全平方数”。这是一道常见的算法问题,通常出现在数据结构和算法的面试中,尤其是在使用Python进行编程面试时。LeetCode是一个在线...
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后 ...输入某年某月某日,判断...
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,...
以上案例展示了如何使用C语言解决实际问题,包括完全平方数的查找、生成特定格式的数字以及根据条件进行奖金计算等。这些案例不仅涵盖了基础的循环和条件判断,还涉及到了数学函数的应用,非常适合初学者学习和掌握...
- 程序分析:该程序寻找满足特定条件的整数,即加上100和268后都为完全平方数。通过循环和数学运算(开方、平方)来检查每个数是否符合要求。 - 关键技术:使用`sqrt()`函数计算平方根,条件判断(if(x*x==i+100&&...
此外,文章提到进一步改进了前人的结果,这说明在研究全平方数集中的除数问题时,作者张德瑜和翟文广在前人工作的基础上,提出了新的分析方法或得到了更精确的结果,对全平方数的除数分布特性有了更深入的认识。...
本资源摘要信息涵盖了五个经典的C语言编程题目,包括猴子吃桃问题、回文数问题、杨辉三角问题、加密问题和平方数问题。每个题目都包含问题描述、程序分析和源代码实现。 一、猴子吃桃问题 猴子吃桃问题是一个经典...