大佬们,关于一道python题目,在网上只有结果的式子...跪求解答!

关注公众号【算法码上来】,每日算法干货马上就来!

给定一个正整数 N ,试求有多少组连续正整数满足所有数字之和为 N ?

这是一道非常经典的数学题,挺基础的,不知道为什么这也能算困难难度的题目?

遍历所有的连续数字区间 (i, j) ,然后求和看等不等于 N 。这种方法时间复杂度是 $O(n^2)$ ,显然不可行。

遍历所有的连续数字区间的左端点 i。然后假设区间长度为 n ,那么根据求和公式有 (2i+n-1)n/2=N ,然后只需要看这个方程的解是否是整数就行。时间复杂度可以降到 $O(n)$ ,但还是太高了。

根据上面的求和公式,对于起点 i 和长度 n ,求和得到 (2i+n-1)n/2=N 。我们可以先粗略推算一下 i 和 n 的范围,起点 i 的范围是 [1, N]毋庸置疑,而区间长度 n 的范围就可以考究一下了,一个出发点是:上面式子可以解出 i=(N-n(n-1)/2)/n ,而 i>=1 ,可以解出 (n+1)n<=2N ,所以 n 的范围其实只有根号 N 级别,可以直接遍历。另一个出发点是最小的 n 个数加起来就是 1 加到 n 等于 n(n+1)/2 ,这个要小于等于 N ,解出来也是 (n+1)n<=2N 。

所以我们只需要从 1 开始遍历 n ,直到 (n+1)n>2N 为止,然后判断 (N-n(n-1)/2)/n 是否是整数就行了(前面终止条件可以保证 i 一定大于 0 )。

这题还可以用质因数分解等方法进一步优化,但是没有必要。

}

上文请点这里,Python初级认知--标识符、变量   这一篇内容,我们来看看Python中的运算符。在学之前先提醒大家,不要刻意去强行记忆这一篇内容,我们只需要了解知道,真正在使用的时候按着我们常识的容易理解的去做就可以了。   运算符(operator)与表达式 1 、表达式 表达式是指用运算符连接各个运算对象,合乎语法规则的式子。比如: 2、运算符 名称 符号

表达式 :由变量、常量和运算符组成式子 算术运算符和算术运算表达式 算术运算符:±/ %取模 **求幂 //取整 算术表达式 4+4,5*6,9/3,a/3 功能:进行相关符号数学运算,不会改变变量值 赋值运算符和赋值运算表达式 赋值运算符 = 赋值运算表达式

1.运算符表达式 运算符:对常量或者变量进行操作符号 表达式:用运算符把常量或者变量连接起来符合Java语法式子就可以称为表达式。 “+”运算符,并且算术运算符 a+b:表达式,由于+算术运算符,所以这个表达式叫算术表达式

|| 条件2):两个条件有个为真时,结果为真 !(!条件):条件为真时,结果为假;条件为假时,结果为真 位运算符 运算符优先级 ()、 sizeof 、++、 – ! 算术运算符 关系运算符 && || 赋值运算符 记忆技巧 1、单目运算符包括 !、~、++、–、sizeof,优先级别高 2、优先级别最低赋值运算符 3、可以通过()控制表达式运算顺序

1.算术运算符 在Go语言中,++-作为语句而不是作为表达式。 关系运算符 逻辑运算符运算符 赋值运算符 其它运算符 运算符优先级 在Go语言中,运算符拥有最高优先级,二元运算符运算方向均是从左至右 下表列出了所有运算符以及它们优先级,由上至下优先级由高到低:

PHP 赋值运算符 PHP 赋值运算符用于向变量写值。 PHP 基础赋值运算符 “=”。这意味右侧赋值表达式会为左侧运算数设置值。 PHP 字符串运算符 PHP 递增/递减运算符 PHP 比较运算符 PHP 比较运算符用于比较两个值(数字或字符串): PHP 逻辑运算符 PHP 数组运算符 PHP 数组运算符用于比较数组:

}

所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。

输入在一行中给出2个正整数m和n(1<m≤n≤10000),中间以空格分隔。

逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + ... + 因子k”,其中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。

我的问题在这里!麻烦大佬解答;
问题1:假如i等于6,那么在的第一个for循环里面,j等于1,2,3;那么在第二个for循环里面岂不是只能取2不能取3了吗;为什么运行结果还是能够取3?
问题2:为啥系统说我的程序有个问题没有解?啥问题,空集?啥空集?

}

我要回帖

更多关于 python经典编程题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信