此问题要求总计100个数字,每个数字长50个。 http://code.jasonbhill.com/python/project-euler-problem-13/
我们可以在Notepad ++中使用“\ n +”替换\n
a=37107287533902102798797998220837590246510135740250
+46376937677490009712648124896970078050417018260538
...
+20849603980134001723930671666823555245252804609722
+53503534226472524250874054075591789781264330331690
print(a)
>>37107287533902102798797998220837590246510135740250
(不正确)
我们也可以用\n
让
\na+=
a=37107287533902102798797998220837590246510135740250
a+=46376937677490009712648124896970078050417018260538
...
a+=20849603980134001723930671666823555245252804609722
a+=53503534226472524250874054075591789781264330331690
print(a)
>>553...
(正确)
这似乎是BigInteger算术的一个特征。在哪些条件下,所有数字的总和(方法1)会产生与迭代增量不同的结果(方法2)?
答案 0 :(得分:1)
正如您在结果中看到的那样,第一组指令不是计算总和。它保留了第一个任务。由于+N
本身就是一个有效的指令,因此赋值后的下一行什么都不做。因此
a=42
+1
print a
打印42
要在两行上写一条指令,您需要转义结束换行符\n
:
a=42\
+1
43
答案 1 :(得分:0)
Python源代码行由换行符终止。第一个示例中的后续行是单独的表达式语句,由前面带有一元加运算符的单个整数组成,但它们不执行任何操作。它们计算表达式(导致整数常量本身),然后忽略结果。如果您将所有数字放在一行上,或者在加法项周围使用括号,那么简单的总和也会起作用。