From be7727193008819200a67ddbc193fcbe683b75ec Mon Sep 17 00:00:00 2001 From: filifa Date: Thu, 24 Jul 2025 23:08:19 -0400 Subject: [PATCH] add copyright notice --- notebooks/problem0001.ipynb | 5 ++++- notebooks/problem0002.ipynb | 6 +++++- notebooks/problem0003.ipynb | 6 +++++- notebooks/problem0004.ipynb | 10 ++++++++++ notebooks/problem0005.ipynb | 6 +++++- notebooks/problem0006.ipynb | 6 +++++- notebooks/problem0007.ipynb | 6 +++++- notebooks/problem0008.ipynb | 6 +++++- notebooks/problem0009.ipynb | 6 +++++- notebooks/problem0010.ipynb | 6 +++++- notebooks/problem0011.ipynb | 10 ++++++++++ notebooks/problem0012.ipynb | 6 +++++- notebooks/problem0013.ipynb | 10 ++++++++++ notebooks/problem0014.ipynb | 6 +++++- notebooks/problem0015.ipynb | 6 +++++- notebooks/problem0016.ipynb | 6 +++++- notebooks/problem0017.ipynb | 6 +++++- notebooks/problem0018.ipynb | 10 ++++++++++ notebooks/problem0019.ipynb | 6 +++++- notebooks/problem0020.ipynb | 6 +++++- notebooks/problem0021.ipynb | 6 +++++- notebooks/problem0022.ipynb | 10 ++++++++++ notebooks/problem0023.ipynb | 6 +++++- notebooks/problem0024.ipynb | 10 ++++++++++ notebooks/problem0025.ipynb | 6 +++++- notebooks/problem0026.ipynb | 6 +++++- notebooks/problem0027.ipynb | 8 ++++++-- notebooks/problem0028.ipynb | 6 +++++- notebooks/problem0029.ipynb | 10 ++++++++++ notebooks/problem0030.ipynb | 6 +++++- notebooks/problem0031.ipynb | 6 +++++- notebooks/problem0032.ipynb | 10 ++++++++++ notebooks/problem0033.ipynb | 10 ++++++++++ notebooks/problem0034.ipynb | 6 +++++- notebooks/problem0035.ipynb | 6 +++++- notebooks/problem0036.ipynb | 6 +++++- notebooks/problem0037.ipynb | 6 +++++- notebooks/problem0038.ipynb | 10 ++++++++++ notebooks/problem0039.ipynb | 6 +++++- notebooks/problem0040.ipynb | 6 +++++- notebooks/problem0041.ipynb | 6 +++++- notebooks/problem0042.ipynb | 10 ++++++++++ notebooks/problem0043.ipynb | 6 +++++- notebooks/problem0044.ipynb | 6 +++++- notebooks/problem0045.ipynb | 10 +++++++--- notebooks/problem0046.ipynb | 6 +++++- notebooks/problem0047.ipynb | 6 +++++- notebooks/problem0048.ipynb | 8 ++++++-- notebooks/problem0049.ipynb | 10 ++++++++++ notebooks/problem0050.ipynb | 6 +++++- notebooks/problem0051.ipynb | 10 ++++++++++ notebooks/problem0052.ipynb | 10 ++++++++++ notebooks/problem0053.ipynb | 6 +++++- notebooks/problem0054.ipynb | 10 ++++++++++ notebooks/problem0055.ipynb | 6 +++++- notebooks/problem0056.ipynb | 10 ++++++++++ notebooks/problem0057.ipynb | 6 +++++- notebooks/problem0058.ipynb | 6 +++++- notebooks/problem0059.ipynb | 10 ++++++++++ notebooks/problem0060.ipynb | 10 ++++++++++ notebooks/problem0061.ipynb | 6 +++++- notebooks/problem0062.ipynb | 10 ++++++++++ notebooks/problem0063.ipynb | 6 +++++- notebooks/problem0064.ipynb | 6 +++++- notebooks/problem0065.ipynb | 6 +++++- notebooks/problem0066.ipynb | 14 +++++++++----- notebooks/problem0067.ipynb | 10 ++++++++++ notebooks/problem0068.ipynb | 10 ++++++++++ notebooks/problem0069.ipynb | 6 +++++- notebooks/problem0070.ipynb | 6 +++++- notebooks/problem0071.ipynb | 6 +++++- notebooks/problem0072.ipynb | 6 +++++- notebooks/problem0073.ipynb | 10 ++++++++++ notebooks/problem0074.ipynb | 6 +++++- notebooks/problem0075.ipynb | 6 +++++- notebooks/problem0076.ipynb | 6 +++++- notebooks/problem0077.ipynb | 6 +++++- notebooks/problem0078.ipynb | 6 +++++- notebooks/problem0079.ipynb | 10 ++++++++++ notebooks/problem0080.ipynb | 6 +++++- notebooks/problem0081.ipynb | 10 ++++++++++ notebooks/problem0082.ipynb | 10 ++++++++++ notebooks/problem0083.ipynb | 10 ++++++++++ notebooks/problem0084.ipynb | 6 +++++- notebooks/problem0085.ipynb | 6 +++++- notebooks/problem0086.ipynb | 6 +++++- notebooks/problem0087.ipynb | 6 +++++- notebooks/problem0088.ipynb | 6 +++++- notebooks/problem0089.ipynb | 10 ++++++++++ notebooks/problem0090.ipynb | 10 ++++++++++ notebooks/problem0091.ipynb | 6 +++++- notebooks/problem0092.ipynb | 6 +++++- notebooks/problem0093.ipynb | 6 +++++- notebooks/problem0094.ipynb | 12 ++++++++---- notebooks/problem0095.ipynb | 6 +++++- notebooks/problem0096.ipynb | 6 +++++- notebooks/problem0097.ipynb | 10 ++++++++++ notebooks/problem0098.ipynb | 10 ++++++++++ notebooks/problem0099.ipynb | 10 ++++++++++ notebooks/problem0100.ipynb | 16 +++++++++++++--- 100 files changed, 673 insertions(+), 82 deletions(-) diff --git a/notebooks/problem0001.ipynb b/notebooks/problem0001.ipynb index 6a97f09..006d4a6 100644 --- a/notebooks/problem0001.ipynb +++ b/notebooks/problem0001.ipynb @@ -34,7 +34,10 @@ "\n", "## Relevant sequences\n", "* Triangular numbers: [A000217](https://oeis.org/A000217)\n", - "* Multiples of 3 and/or 5: [A281746](https://oeis.org/A281746)" + "* Multiples of 3 and/or 5: [A281746](https://oeis.org/A281746)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0002.ipynb b/notebooks/problem0002.ipynb index 8a3db53..8a4c755 100644 --- a/notebooks/problem0002.ipynb +++ b/notebooks/problem0002.ipynb @@ -63,7 +63,11 @@ "source": [ "## Relevant sequences\n", "* Fibonacci numbers: [A000045](https://oeis.org/A000045)\n", - "* Partial sums of even Fibonacci numbers: [A099919](https://oeis.org/A099919)" + "* Partial sums of even Fibonacci numbers: [A099919](https://oeis.org/A099919)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0003.ipynb b/notebooks/problem0003.ipynb index 1c2e8c4..cdeb2b8 100644 --- a/notebooks/problem0003.ipynb +++ b/notebooks/problem0003.ipynb @@ -101,7 +101,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Greatest prime factors: [A006530](https://oeis.org/A006530)" + "* Greatest prime factors: [A006530](https://oeis.org/A006530)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0004.ipynb b/notebooks/problem0004.ipynb index 076ef86..ee928a1 100644 --- a/notebooks/problem0004.ipynb +++ b/notebooks/problem0004.ipynb @@ -34,6 +34,16 @@ "three_digit_pairs = combinations(range(100, 1000), 2)\n", "max(x*y for (x,y) in three_digit_pairs if is_palindrome(x*y))" ] + }, + { + "cell_type": "markdown", + "id": "ac68b4da", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0005.ipynb b/notebooks/problem0005.ipynb index ecc1c95..6ab0151 100644 --- a/notebooks/problem0005.ipynb +++ b/notebooks/problem0005.ipynb @@ -49,7 +49,11 @@ "This formula is only defined for two numbers, but if we want to find an LCM of a set of three or more numbers, we can simply find the LCM of any two numbers in the set, then proceed to find the LCM of that value and another number from the set, repeating until we have used each number. For example, to find the LCM of 5, 8, and 14, you can first find the LCM of 5 and 8 using the above formula (40), then find the LCM of 40 and 14 (280).\n", "\n", "## Relevant sequences\n", - "* Least common multiple of $1,2,\\ldots,n$: [A003418](https://oeis.org/A003418)" + "* Least common multiple of $1,2,\\ldots,n$: [A003418](https://oeis.org/A003418)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0006.ipynb b/notebooks/problem0006.ipynb index cbe5534..fd70351 100644 --- a/notebooks/problem0006.ipynb +++ b/notebooks/problem0006.ipynb @@ -21,7 +21,11 @@ "\n", "## Relevant sequences\n", "* Triangular numbers: [A000217](https://oeis.org/A000217)\n", - "* Square pyramidal numbers: [A000330](https://oeis.org/A000330)" + "* Square pyramidal numbers: [A000330](https://oeis.org/A000330)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0007.ipynb b/notebooks/problem0007.ipynb index 0ea2501..0087ddf 100644 --- a/notebooks/problem0007.ipynb +++ b/notebooks/problem0007.ipynb @@ -160,7 +160,11 @@ "source": [ "## Relevant sequences\n", "* Prime numbers: [A000040](https://oeis.org/A000040)\n", - "* Carmichael numbers: [A002997](https://oeis.org/A002997)" + "* Carmichael numbers: [A002997](https://oeis.org/A002997)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0008.ipynb b/notebooks/problem0008.ipynb index ae9fe24..b090be1 100644 --- a/notebooks/problem0008.ipynb +++ b/notebooks/problem0008.ipynb @@ -55,7 +55,11 @@ "id": "4148d160", "metadata": {}, "source": [ - "Their product is 23514624000." + "Their product is 23514624000.\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0009.ipynb b/notebooks/problem0009.ipynb index 60c73e1..22860b6 100644 --- a/notebooks/problem0009.ipynb +++ b/notebooks/problem0009.ipynb @@ -84,7 +84,11 @@ "id": "8809ed3b", "metadata": {}, "source": [ - "So our product is $abc=31875000$." + "So our product is $abc=31875000$.\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0010.ipynb b/notebooks/problem0010.ipynb index 78e860c..3a30154 100644 --- a/notebooks/problem0010.ipynb +++ b/notebooks/problem0010.ipynb @@ -66,7 +66,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Partial sums of primes: [A007504](https://oeis.org/A007504)" + "* Partial sums of primes: [A007504](https://oeis.org/A007504)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0011.ipynb b/notebooks/problem0011.ipynb index 56252ff..a67eaf2 100644 --- a/notebooks/problem0011.ipynb +++ b/notebooks/problem0011.ipynb @@ -77,6 +77,16 @@ "\n", "print(maximum)" ] + }, + { + "cell_type": "markdown", + "id": "8626099f", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0012.ipynb b/notebooks/problem0012.ipynb index e3c0055..2c45205 100644 --- a/notebooks/problem0012.ipynb +++ b/notebooks/problem0012.ipynb @@ -58,7 +58,11 @@ "## Relevant sequences\n", "* Number of divisors: [A000005](https://oeis.org/A000005)\n", "* Triangular numbers: [A000217](https://oeis.org/A000217)\n", - "* Number of divisors of triangular numbers: [A063440](https://oeis.org/A063440)" + "* Number of divisors of triangular numbers: [A063440](https://oeis.org/A063440)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0013.ipynb b/notebooks/problem0013.ipynb index 1b1d6b4..ecdd402 100644 --- a/notebooks/problem0013.ipynb +++ b/notebooks/problem0013.ipynb @@ -147,6 +147,16 @@ "source": [ "int(str(sum(nums))[:10])" ] + }, + { + "cell_type": "markdown", + "id": "dfce30f6", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0014.ipynb b/notebooks/problem0014.ipynb index 858636d..fe21198 100644 --- a/notebooks/problem0014.ipynb +++ b/notebooks/problem0014.ipynb @@ -68,7 +68,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Collatz chain lengths: [A008908](https://oeis.org/A008908)" + "* Collatz chain lengths: [A008908](https://oeis.org/A008908)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0015.ipynb b/notebooks/problem0015.ipynb index b5fa419..4bbcb29 100644 --- a/notebooks/problem0015.ipynb +++ b/notebooks/problem0015.ipynb @@ -88,7 +88,11 @@ "source": [ "## Relevant sequences\n", "* Central binomial coefficients: [A000984](https://oeis.org/A000984)\n", - "* General formula: [A046899](https://oeis.org/A046899)" + "* General formula: [A046899](https://oeis.org/A046899)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0016.ipynb b/notebooks/problem0016.ipynb index 7c0b41b..2263270 100644 --- a/notebooks/problem0016.ipynb +++ b/notebooks/problem0016.ipynb @@ -40,7 +40,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Sums of digits of $2^n$: [A001370](https://oeis.org/A001370)" + "* Sums of digits of $2^n$: [A001370](https://oeis.org/A001370)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0017.ipynb b/notebooks/problem0017.ipynb index 23be58c..b858440 100644 --- a/notebooks/problem0017.ipynb +++ b/notebooks/problem0017.ipynb @@ -119,7 +119,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Number of letters in British numeral: [A362123](https://oeis.org/A362123)" + "* Number of letters in British numeral: [A362123](https://oeis.org/A362123)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0018.ipynb b/notebooks/problem0018.ipynb index 0346ae7..989b006 100644 --- a/notebooks/problem0018.ipynb +++ b/notebooks/problem0018.ipynb @@ -153,6 +153,16 @@ "\n", "max_path_sum(triangle)" ] + }, + { + "cell_type": "markdown", + "id": "1d84d533", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0019.ipynb b/notebooks/problem0019.ipynb index 38c2c7e..82d2cd3 100644 --- a/notebooks/problem0019.ipynb +++ b/notebooks/problem0019.ipynb @@ -114,7 +114,11 @@ "id": "83b6e18e", "metadata": {}, "source": [ - "One last note, just for fun: did you know you can learn how to calculate what day of the week any date falls on [in your head](https://en.wikipedia.org/wiki/Doomsday_rule)?" + "One last note, just for fun: did you know you can learn how to calculate what day of the week any date falls on [in your head](https://en.wikipedia.org/wiki/Doomsday_rule)?\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0020.ipynb b/notebooks/problem0020.ipynb index 76f4fbd..df73561 100644 --- a/notebooks/problem0020.ipynb +++ b/notebooks/problem0020.ipynb @@ -37,7 +37,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Sum of digits of $n!$: [A004152](https://oeis.org/A004152)" + "* Sum of digits of $n!$: [A004152](https://oeis.org/A004152)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0021.ipynb b/notebooks/problem0021.ipynb index 210dd39..0bb4773 100644 --- a/notebooks/problem0021.ipynb +++ b/notebooks/problem0021.ipynb @@ -232,7 +232,11 @@ "source": [ "## Relevant sequences\n", "* Sums of divisors: [A000203](https://oeis.org/A000203)\n", - "* Amicable numbers: [A063990](https://oeis.org/A063990)" + "* Amicable numbers: [A063990](https://oeis.org/A063990)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0022.ipynb b/notebooks/problem0022.ipynb index b534d9c..ffcb6d9 100644 --- a/notebooks/problem0022.ipynb +++ b/notebooks/problem0022.ipynb @@ -60,6 +60,16 @@ "\n", "sum(name_score(i, name) for (i, name) in enumerate(names, start=1))" ] + }, + { + "cell_type": "markdown", + "id": "7c61f808", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0023.ipynb b/notebooks/problem0023.ipynb index c0ddcbe..91f1e8d 100644 --- a/notebooks/problem0023.ipynb +++ b/notebooks/problem0023.ipynb @@ -64,7 +64,11 @@ "source": [ "## Relevant sequences\n", "* Sums of divisors: [A000203](https://oeis.org/A000203)\n", - "* Numbers that are not the sum of two abundant numbers: [A048242](https://oeis.org/A048242)" + "* Numbers that are not the sum of two abundant numbers: [A048242](https://oeis.org/A048242)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0024.ipynb b/notebooks/problem0024.ipynb index 941c54c..dbfd381 100644 --- a/notebooks/problem0024.ipynb +++ b/notebooks/problem0024.ipynb @@ -98,6 +98,16 @@ " lst[i+1:] = lst[i+1:][::-1]\n", " break" ] + }, + { + "cell_type": "markdown", + "id": "cde4b894", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0025.ipynb b/notebooks/problem0025.ipynb index df7648e..4ae5122 100644 --- a/notebooks/problem0025.ipynb +++ b/notebooks/problem0025.ipynb @@ -29,7 +29,11 @@ "Therefore, we want $n=4782$.\n", "\n", "## Relevant sequences\n", - "* Fibonacci numbers: [A000045](https://oeis.org/A000045)" + "* Fibonacci numbers: [A000045](https://oeis.org/A000045)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0026.ipynb b/notebooks/problem0026.ipynb index 20a8808..f47f0b9 100644 --- a/notebooks/problem0026.ipynb +++ b/notebooks/problem0026.ipynb @@ -101,7 +101,11 @@ "As a concrete example of the above, consider $d = 2^4 \\times 5 \\times 63 = 5040$. The decimal representation of $u = \\frac{1}{d}$ is $0.0001(984126)$, where 984126 is the repetend. Therefore $q=4$ and $r=6$. Sure enough, $10^q 10^r u - 10^q u = 1984125$ is an integer; therefore, $10^{10} \\equiv 10^4 \\pmod{5040}$, and $10^6 \\equiv 1 \\pmod{63}$.\n", "\n", "## Relevant sequences\n", - "* Periods of reciprocals: [A007732](https://oeis.org/A007732)" + "* Periods of reciprocals: [A007732](https://oeis.org/A007732)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0027.ipynb b/notebooks/problem0027.ipynb index e54a2bb..f14c744 100644 --- a/notebooks/problem0027.ipynb +++ b/notebooks/problem0027.ipynb @@ -99,7 +99,7 @@ "outputs": [ { "data": { - "image/png": "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AISVX36Rvv5aev99St3JuMcOAACElZdflq68Urr/fttJQg8jdgAAIGysXCl98on05ptSXlrMKRixAwAAYSMlRSpdWvrPf2wnCU10XQAAEBbWrTMnTbz+upQvn+00oYkROwAAEBYGDpQuuURq1cp2ktBFsQMAACFv0ybp3XelLl2kAgVspwldFDsAABDyhgyRihSR2ra1nSS0UewAAEBI27ZNGjdOeuYZqXBh22lCG8UOAACEtKFDpeho6amnbCcJfRQ7AI7l8XjkdruVnJxsOwqA85SWJo0aZUpd0aK204Q+zooF4HicFQuEr169pFdflTZuNCticXaM2AEAgJCUni6NGGEWTFDqsodiBwAAQtKoUdL+/dKzz9pOEj4odgAAIOTs3WumYB97TCpVynaa8EGxAwAAIWfUKMnrlbp3t50kvFDsAABASNm3z2xI3KqVVKaM7TThhWIHAABCyqhRZuFEjx62k4Qfih0AAAgZx0brWrSQ4uNtpwk/FDsAABAy3nhD2rVLev5520nCE8UOAACEhP37pcGDzWjd5ZfbThOeKHYAACAkvPGG9M8/jNblht+L3Z49UrNm0pw5/n7LAADAqY6N1j36qJSQYDtN+PJ7sStcWFq1SurdW+IUWgA2eTweud1uJScn244C4BzGjpV27pR69rSdJLy5fD7/168vvpDuvlv673+lWrX8/dYBIGe8Xq9iY2OVnp6umJgY23EAnOTAAemKK6T69aXx422nCW8BucfuzjulKlUYtQMAAOc2dqz099+M1vlDQIqdyyX16SP98IM0e3YgXgEAADjBwYPSoEHSI49IV15pO034C9iq2DvukG64gVE7AABwZuPGSdu3M1rnLwErdsdG7ebPl2bODNSrAACAcHXwoDRwoPTww1K5crbTOENAFk8c4/NJN95o/nv+fFP2ACDYWDwBhCaPR+rQQfr9dykx0XYaZwjoBsUul9Svn7RwofT114F8JQAAEE4yMqSUFOmhhyh1/hTwkyfq1JFuuknq1Yt77QAAgDFunLR1q/TCC7aTOEvAi53LJfXtK/38s/Tll4F+NQDhaPPmzXrkkUdUrFgxFSxYUJUqVdLixYuznvf5fOrTp49KlSqlAgUKqGbNmlq5cqXFxAByY/9+6eWXzUrY8uVtp3GWoJwVe/vt0s03m8UUjNoBON6uXbtUvXp1XXDBBZox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\n", + "image/png": "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WrlypRYuXKhTp06pQYMGOnr0qO1o8INVq1Zp0qRJuvbaa21HCVtsd+Jn8+bNU69evfThhx+qUqVK+u6771S1alXbseAnI0aM0IQJE/TLL7/YjoIMqFGjhq6//npNmDAh/bGKFSvqnnvu0dChQy0mg7/88ccfKlKkiJYsWaJbb73VdhxkwZEjR3T99ddr/PjxevHFF1W1alWNGTPGdqyww4idH/3+++/q1KmTpk+frty5c9uOgwBITk5WgQIFbMdABqSmpmrNmjVq0KDBOY83aNBAy5cvt5QK/pacnCxJfF06QNeuXdWkSRPdcccdtqOEtey2AziFz+dTu3bt1KVLF1WvXl07duywHQl+9vPPP2vs2LF65ZVXbEdBBuzfv1+nT59W0aJFz3m8aNGiSkpKspQK/uTz+dSrVy/dfPPNqly5su04yIKZM2dq7dq1WrVqle0oYY8Ru0sYNGiQXC7XP16rV6/W2LFj5fV61a9fP9uRcQkZ/Zyebc+ePWrUqJFatmypjh07WkqOzHC5XOe87fP5znsM4enxxx/XDz/8oHfffdd2FGTBrl271KNHD7399tuKiYmxHSfscY/dJezfv1/79+//x/cpXbq0WrVqpU8//fScfzBOnz6tqKgotWnTRtOmTQt0VGRQRj+nZ77B7NmzR7fddptq1Kih//znP8qWjZ+HwkFqaqpy586t999/X82aNUt/vEePHlq3bp2WLFliMR2yqlu3bpozZ46+/vprlSlTxnYcZMGcOXPUrFkzRUVFpT92+vRpuVwuZcuWTSkpKec8h39GsfOTnTt3yuv1pr+9Z88eNWzYUB988IFq1KihEiVKWEyHzPrtt99022236YYbbtDbb7/NN5cwU6NGDd1www0aP358+mNut1tNmzZl8USY8vl86tatm2bPnq3FixerXLlytiMhiw4fPqxff/31nMcefvhhVahQQX379mWa/TJxj52flCpV6py38+bNK0kqW7YspS5M7dmzR3Xr1lWpUqU0cuRI/fHHH+nPxcfHW0yGjOrVq5cefPBBVa9eXTfddJMmTZqknTt3qkuXLrajIZO6du2qGTNm6OOPP1a+fPnS75eMi4tTrly5LKdDZuTLl++88pYnTx4VLFiQUpcJFDvgIhYsWKBt27Zp27Zt55VzBrrDw3333acDBw7o+eef1969e1W5cmV9/vnnSkhIsB0NmXRm65q6deue8/jUqVPVrl274AcCQgxTsQAAAA7BXeAAAAAOQbEDAABwCIodAACAQ1DsAAAAHIJiBwAA4BAUOwAAAIeg2AEAADgExQ4AAMAhKHYAAAAOQbEDAABwCIodAACAQ1DsAAAAHOL/AeT1fjyJEoHMAAAAAElFTkSuQmCC\n", "text/plain": [ "Graphics object consisting of 1 graphics primitive" ] @@ -126,7 +126,11 @@ "Because of the symmetry of $f$, the transformation $f(u-n)$ is actually the *same* as shifting $f$ to the right $u+1$ units (this can be shown algebraically); then, after outputting the primes in reverse, the vertex is reached and the function starts increasing again, repeating the primes that were already output.\n", "\n", "## Relevant sequences\n", - "* Primes generated by Euler's formula: [A005846](https://oeis.org/A005846)" + "* Primes generated by Euler's formula: [A005846](https://oeis.org/A005846)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0028.ipynb b/notebooks/problem0028.ipynb index 739e08a..65dd287 100644 --- a/notebooks/problem0028.ipynb +++ b/notebooks/problem0028.ipynb @@ -22,7 +22,11 @@ "Side note: this practice of writing the natural numbers in a spiral, combined with marking the prime numbers, has been coined the [Ulam spiral](https://en.wikipedia.org/wiki/Ulam_spiral). Somewhat interestingly, lots of primes appear in vertical, horizontal, and diagonal lines when laid out this way.\n", "\n", "## Relevant sequences\n", - "* Numbers on diagonals: [A200975](https://oeis.org/A200975)" + "* Numbers on diagonals: [A200975](https://oeis.org/A200975)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0029.ipynb b/notebooks/problem0029.ipynb index 6a1173a..a661e05 100644 --- a/notebooks/problem0029.ipynb +++ b/notebooks/problem0029.ipynb @@ -30,6 +30,16 @@ "source": [ "len({a ** b for a in range(2, 101) for b in range(2, 101)})" ] + }, + { + "cell_type": "markdown", + "id": "d7afa770", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0030.ipynb b/notebooks/problem0030.ipynb index a2849e3..1c03754 100644 --- a/notebooks/problem0030.ipynb +++ b/notebooks/problem0030.ipynb @@ -74,7 +74,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Perfect digital invariants: [A252648](https://oeis.org/A252648)" + "* Perfect digital invariants: [A252648](https://oeis.org/A252648)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0031.ipynb b/notebooks/problem0031.ipynb index bd050fa..3c77e34 100644 --- a/notebooks/problem0031.ipynb +++ b/notebooks/problem0031.ipynb @@ -235,7 +235,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Number of ways to make change with Euro currency (same values as this problem until $n=500$): [A057537](https://oeis.org/A057537)" + "* Number of ways to make change with Euro currency (same values as this problem until $n=500$): [A057537](https://oeis.org/A057537)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0032.ipynb b/notebooks/problem0032.ipynb index b4e04aa..101526a 100644 --- a/notebooks/problem0032.ipynb +++ b/notebooks/problem0032.ipynb @@ -93,6 +93,16 @@ "source": [ "sum(set(products.values()))" ] + }, + { + "cell_type": "markdown", + "id": "04862a57", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0033.ipynb b/notebooks/problem0033.ipynb index 459b9da..79f4551 100644 --- a/notebooks/problem0033.ipynb +++ b/notebooks/problem0033.ipynb @@ -102,6 +102,16 @@ "source": [ "prod(QQ(n/d) for (n, d) in fractions).denominator()" ] + }, + { + "cell_type": "markdown", + "id": "1514f872", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0034.ipynb b/notebooks/problem0034.ipynb index 37938c8..1c8d4c5 100644 --- a/notebooks/problem0034.ipynb +++ b/notebooks/problem0034.ipynb @@ -98,7 +98,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Factorions: [A014080](https://oeis.org/A014080)" + "* Factorions: [A014080](https://oeis.org/A014080)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0035.ipynb b/notebooks/problem0035.ipynb index 45378d8..246c0de 100644 --- a/notebooks/problem0035.ipynb +++ b/notebooks/problem0035.ipynb @@ -56,7 +56,11 @@ "Another note - there aren't that many known circular primes, and all of the known ones greater than one million are [repunits](https://en.wikipedia.org/wiki/Repunit).\n", "\n", "## Relevant sequences\n", - "* Circular primes: [A068652](https://oeis.org/A068652)" + "* Circular primes: [A068652](https://oeis.org/A068652)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0036.ipynb b/notebooks/problem0036.ipynb index 2e84875..e6e7502 100644 --- a/notebooks/problem0036.ipynb +++ b/notebooks/problem0036.ipynb @@ -80,7 +80,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Numbers that are base-2 and base-10 palindromes: [A007632](https://oeis.org/A007632)" + "* Numbers that are base-2 and base-10 palindromes: [A007632](https://oeis.org/A007632)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0037.ipynb b/notebooks/problem0037.ipynb index 76f7845..d6971c3 100644 --- a/notebooks/problem0037.ipynb +++ b/notebooks/problem0037.ipynb @@ -222,7 +222,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Two-sided primes: [A020994](https://oeis.org/A020994)" + "* Two-sided primes: [A020994](https://oeis.org/A020994)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0038.ipynb b/notebooks/problem0038.ipynb index 5d5937f..14f4462 100644 --- a/notebooks/problem0038.ipynb +++ b/notebooks/problem0038.ipynb @@ -93,6 +93,16 @@ "source": [ "max(pandigitals.values())" ] + }, + { + "cell_type": "markdown", + "id": "094c440b", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0039.ipynb b/notebooks/problem0039.ipynb index 886c0bc..8e762ce 100644 --- a/notebooks/problem0039.ipynb +++ b/notebooks/problem0039.ipynb @@ -140,7 +140,11 @@ "metadata": {}, "source": [ "## Related sequences\n", - "* Number of integer right triangles with perimeter $n$: [A024155](https://oeis.org/A024155)" + "* Number of integer right triangles with perimeter $n$: [A024155](https://oeis.org/A024155)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0040.ipynb b/notebooks/problem0040.ipynb index 08f9fa3..a1f5768 100644 --- a/notebooks/problem0040.ipynb +++ b/notebooks/problem0040.ipynb @@ -42,7 +42,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Digits of Champernowne's constant: [A033307](https://oeis.org/A033307)" + "* Digits of Champernowne's constant: [A033307](https://oeis.org/A033307)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0041.ipynb b/notebooks/problem0041.ipynb index 63002c0..afae1c4 100644 --- a/notebooks/problem0041.ipynb +++ b/notebooks/problem0041.ipynb @@ -74,7 +74,11 @@ "source": [ "## Relevant sequences\n", "* Pandigital numbers: [A352991](https://oeis.org/A352991)\n", - "* Pandigital primes: [A216444](https://oeis.org/A216444)" + "* Pandigital primes: [A216444](https://oeis.org/A216444)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0042.ipynb b/notebooks/problem0042.ipynb index 27af7a5..46fbb96 100644 --- a/notebooks/problem0042.ipynb +++ b/notebooks/problem0042.ipynb @@ -78,6 +78,16 @@ "triangle_words = {w for w in words if is_triangle_word(w)}\n", "len(triangle_words)" ] + }, + { + "cell_type": "markdown", + "id": "02bf08bf", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0043.ipynb b/notebooks/problem0043.ipynb index d13b30f..5139d58 100644 --- a/notebooks/problem0043.ipynb +++ b/notebooks/problem0043.ipynb @@ -99,7 +99,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Pandigital numbers: [A050278](https://oeis.org/A050278)" + "* Pandigital numbers: [A050278](https://oeis.org/A050278)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0044.ipynb b/notebooks/problem0044.ipynb index 7b235a6..ec6c68b 100644 --- a/notebooks/problem0044.ipynb +++ b/notebooks/problem0044.ipynb @@ -243,7 +243,11 @@ "\n", "## Relevant sequences\n", "* Pentagonal numbers: [A000326](https://oeis.org/A000326)\n", - "* Pentagonal numbers which are the sum of two other positive pentagonal numbers: [A136117](https://oeis.org/A136117)" + "* Pentagonal numbers which are the sum of two other positive pentagonal numbers: [A136117](https://oeis.org/A136117)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0045.ipynb b/notebooks/problem0045.ipynb index b4012ac..6efce19 100644 --- a/notebooks/problem0045.ipynb +++ b/notebooks/problem0045.ipynb @@ -46,8 +46,8 @@ { "data": { "text/plain": [ - "(1/12*(2107560*sqrt(3) + 3650401)^t*(3*sqrt(3) + 5) - 1/12*(-2107560*sqrt(3) + 3650401)^t*(3*sqrt(3) - 5) + 1/6,\n", - " 1/24*sqrt(3)*((2107560*sqrt(3) + 3650401)^t*(3*sqrt(3) + 5) + (-2107560*sqrt(3) + 3650401)^t*(3*sqrt(3) - 5)) + 1/4)" + "(-1/12*(2107560*sqrt(3) + 3650401)^t*(153*sqrt(3) + 265) + 1/12*(-2107560*sqrt(3) + 3650401)^t*(153*sqrt(3) - 265) + 1/6,\n", + " -1/24*sqrt(3)*((2107560*sqrt(3) + 3650401)^t*(153*sqrt(3) + 265) + (-2107560*sqrt(3) + 3650401)^t*(153*sqrt(3) - 265)) + 1/4)" ] }, "execution_count": 2, @@ -337,7 +337,11 @@ "* [Pell's Equation, II](https://kconrad.math.uconn.edu/blurbs/ugradnumthy/pelleqn2.pdf)\n", "\n", "## Relevant sequences\n", - "* Hexagonal pentagonal numbers: [A046180](https://oeis.org/A046180)" + "* Hexagonal pentagonal numbers: [A046180](https://oeis.org/A046180)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0046.ipynb b/notebooks/problem0046.ipynb index 0c5ea5c..eca3b37 100644 --- a/notebooks/problem0046.ipynb +++ b/notebooks/problem0046.ipynb @@ -65,7 +65,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Stern numbers (includes all odd numbers, not just composites): [A060003](https://oeis.org/A060003)" + "* Stern numbers (includes all odd numbers, not just composites): [A060003](https://oeis.org/A060003)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0047.ipynb b/notebooks/problem0047.ipynb index 4ac513c..86ba15c 100644 --- a/notebooks/problem0047.ipynb +++ b/notebooks/problem0047.ipynb @@ -49,7 +49,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Number of distinct prime factors: [A001221](https://oeis.org/A001221)" + "* Number of distinct prime factors: [A001221](https://oeis.org/A001221)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0048.ipynb b/notebooks/problem0048.ipynb index 6e2ed91..16b9b2a 100644 --- a/notebooks/problem0048.ipynb +++ b/notebooks/problem0048.ipynb @@ -5,7 +5,7 @@ "id": "e829e539", "metadata": {}, "source": [ - "# [Self Powers](https://projecteuler.net/problem=48)\n", + "## [Self Powers](https://projecteuler.net/problem=48)\n", "\n", "Easy with [modular exponentiation](https://en.wikipedia.org/wiki/Modular_exponentiation), which is built into Python." ] @@ -47,7 +47,11 @@ "\n", "## Relevant sequences\n", "* $n^n$: [A000312](https://oeis.org/A000312)\n", - "* Partial sums of $n^n$: [A001923](https://oeis.org/A001923)" + "* Partial sums of $n^n$: [A001923](https://oeis.org/A001923)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0049.ipynb b/notebooks/problem0049.ipynb index 4b1af56..be42e3a 100644 --- a/notebooks/problem0049.ipynb +++ b/notebooks/problem0049.ipynb @@ -111,6 +111,16 @@ " \n", "p, q, r" ] + }, + { + "cell_type": "markdown", + "id": "929e777d", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0050.ipynb b/notebooks/problem0050.ipynb index dc3b8d6..fd4eee8 100644 --- a/notebooks/problem0050.ipynb +++ b/notebooks/problem0050.ipynb @@ -130,7 +130,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Primes expressible as the sum of (at least two) consecutive primes in at least 1 way: [A067377](https://oeis.org/A067377)" + "* Primes expressible as the sum of (at least two) consecutive primes in at least 1 way: [A067377](https://oeis.org/A067377)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0051.ipynb b/notebooks/problem0051.ipynb index 3d9bd8f..605c6c3 100644 --- a/notebooks/problem0051.ipynb +++ b/notebooks/problem0051.ipynb @@ -159,6 +159,16 @@ "source": [ "min(f)" ] + }, + { + "cell_type": "markdown", + "id": "8cc3e0f4", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0052.ipynb b/notebooks/problem0052.ipynb index a304254..b5a27e7 100644 --- a/notebooks/problem0052.ipynb +++ b/notebooks/problem0052.ipynb @@ -40,6 +40,16 @@ " \n", "n" ] + }, + { + "cell_type": "markdown", + "id": "898f292d", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0053.ipynb b/notebooks/problem0053.ipynb index b3e6fb4..dd5c76e 100644 --- a/notebooks/problem0053.ipynb +++ b/notebooks/problem0053.ipynb @@ -50,7 +50,11 @@ "$\\log{n!}$ can be computed in a number of ways. You can use the [log-gamma function](https://en.wikipedia.org/wiki/Gamma_function), or you can implement a function yourself, either by applying logarithmic identities again:\n", "$$\\log{n!} = \\log{1} + \\log{2} + \\log{3} \\cdots + \\log{n}$$\n", "or by using [Stirling's approximation](https://en.wikipedia.org/wiki/Stirling%27s_approximation):\n", - "$$\\log{n!} \\approx \\left(n + \\frac{1}{2}\\right)\\log{n} - n + \\frac{1}{2}\\log{2\\pi}$$" + "$$\\log{n!} \\approx \\left(n + \\frac{1}{2}\\right)\\log{n} - n + \\frac{1}{2}\\log{2\\pi}$$\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0054.ipynb b/notebooks/problem0054.ipynb index dab77d5..d4fe522 100644 --- a/notebooks/problem0054.ipynb +++ b/notebooks/problem0054.ipynb @@ -238,6 +238,16 @@ "wins = [i for (i, (x, y)) in enumerate(hands) if x > y]\n", "len(wins)" ] + }, + { + "cell_type": "markdown", + "id": "dc2baa5b", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0055.ipynb b/notebooks/problem0055.ipynb index 550d114..ac67488 100644 --- a/notebooks/problem0055.ipynb +++ b/notebooks/problem0055.ipynb @@ -77,7 +77,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Suspected Lychrel numbers: [A023108](https://oeis.org/A023108)" + "* Suspected Lychrel numbers: [A023108](https://oeis.org/A023108)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0056.ipynb b/notebooks/problem0056.ipynb index 409569e..a9798e9 100644 --- a/notebooks/problem0056.ipynb +++ b/notebooks/problem0056.ipynb @@ -46,6 +46,16 @@ "source": [ "max(digit_sum(a^b) for a in range(1, 100) for b in range(1, 100))" ] + }, + { + "cell_type": "markdown", + "id": "d6f7d0af", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0057.ipynb b/notebooks/problem0057.ipynb index 737071f..4850040 100644 --- a/notebooks/problem0057.ipynb +++ b/notebooks/problem0057.ipynb @@ -147,7 +147,11 @@ "source": [ "## Relevant sequences\n", "* Numerators of convergents of $\\sqrt{2}$: [A001333](https://oeis.org/A001333)\n", - "* Pell numbers (denominators of convergents of $\\sqrt{2}$): [A000129](https://oeis.org/A000129)" + "* Pell numbers (denominators of convergents of $\\sqrt{2}$): [A000129](https://oeis.org/A000129)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0058.ipynb b/notebooks/problem0058.ipynb index 2845e1c..87e8b1a 100644 --- a/notebooks/problem0058.ipynb +++ b/notebooks/problem0058.ipynb @@ -63,7 +63,11 @@ "source": [ "## Relevant sequences\n", "* Numbers on diagonals: [A200975](https://oeis.org/A200975)\n", - "* Primes at right-angle turns on the Ulam spiral: [A172979](https://oeis.org/A172979)" + "* Primes at right-angle turns on the Ulam spiral: [A172979](https://oeis.org/A172979)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0059.ipynb b/notebooks/problem0059.ipynb index 89fc983..fa35687 100644 --- a/notebooks/problem0059.ipynb +++ b/notebooks/problem0059.ipynb @@ -183,6 +183,16 @@ "source": [ "sum(plaintext)" ] + }, + { + "cell_type": "markdown", + "id": "e8832df2", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0060.ipynb b/notebooks/problem0060.ipynb index aa2105c..672879b 100644 --- a/notebooks/problem0060.ipynb +++ b/notebooks/problem0060.ipynb @@ -215,6 +215,16 @@ "min_clique = min(cliques, key=sum)\n", "min_clique" ] + }, + { + "cell_type": "markdown", + "id": "07fc52d8", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0061.ipynb b/notebooks/problem0061.ipynb index dc3da9a..975eda5 100644 --- a/notebooks/problem0061.ipynb +++ b/notebooks/problem0061.ipynb @@ -206,7 +206,11 @@ "* Pentagonal numbers: [A000326](https://oeis.org/A000326)\n", "* Hexagonal numbers: [A000384](https://oeis.org/A000384)\n", "* Heptagonal numbers: [A000566](https://oeis.org/A000566)\n", - "* Octagonal numbers: [A000567](https://oeis.org/A000567)" + "* Octagonal numbers: [A000567](https://oeis.org/A000567)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0062.ipynb b/notebooks/problem0062.ipynb index c7b4334..5cd756e 100644 --- a/notebooks/problem0062.ipynb +++ b/notebooks/problem0062.ipynb @@ -89,6 +89,16 @@ "source": [ "min(s)" ] + }, + { + "cell_type": "markdown", + "id": "1701dfc7", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0063.ipynb b/notebooks/problem0063.ipynb index 0fa20b7..3b1e3db 100644 --- a/notebooks/problem0063.ipynb +++ b/notebooks/problem0063.ipynb @@ -21,7 +21,11 @@ "$$9 + 6 + 5 + 4 + 3 + 3 + 2 + 2 + 2 + 2 + 1 \\times 11 = 49$$\n", "\n", "## Relevant sequences\n", - "* Numbers with $k$ digits that are also $k$th powers: [A132722](https://oeis.org/A132722)" + "* Numbers with $k$ digits that are also $k$th powers: [A132722](https://oeis.org/A132722)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0064.ipynb b/notebooks/problem0064.ipynb index 5ab2650..9796f02 100644 --- a/notebooks/problem0064.ipynb +++ b/notebooks/problem0064.ipynb @@ -115,7 +115,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Periods of continued fractions of $\\sqrt{n}$: [A003285](https://oeis.org/A003285)" + "* Periods of continued fractions of $\\sqrt{n}$: [A003285](https://oeis.org/A003285)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0065.ipynb b/notebooks/problem0065.ipynb index bec1216..05287f1 100644 --- a/notebooks/problem0065.ipynb +++ b/notebooks/problem0065.ipynb @@ -116,7 +116,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Numerators of convergents of $e$: [A007676](https://oeis.org/A007676)" + "* Numerators of convergents of $e$: [A007676](https://oeis.org/A007676)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0066.ipynb b/notebooks/problem0066.ipynb index 39f2b10..9cc6f79 100644 --- a/notebooks/problem0066.ipynb +++ b/notebooks/problem0066.ipynb @@ -19,10 +19,10 @@ { "data": { "text/plain": [ - "[(-sqrt(2)*(2*sqrt(2) + 3)^t + sqrt(2)*(-2*sqrt(2) + 3)^t - 3/2*(2*sqrt(2) + 3)^t - 3/2*(-2*sqrt(2) + 3)^t,\n", - " 3/4*sqrt(2)*(2*sqrt(2) + 3)^t - 3/4*sqrt(2)*(-2*sqrt(2) + 3)^t + (2*sqrt(2) + 3)^t + (-2*sqrt(2) + 3)^t),\n", - " (sqrt(2)*(2*sqrt(2) + 3)^t - sqrt(2)*(-2*sqrt(2) + 3)^t + 3/2*(2*sqrt(2) + 3)^t + 3/2*(-2*sqrt(2) + 3)^t,\n", - " -3/4*sqrt(2)*(2*sqrt(2) + 3)^t + 3/4*sqrt(2)*(-2*sqrt(2) + 3)^t - (2*sqrt(2) + 3)^t - (-2*sqrt(2) + 3)^t)]" + "[(sqrt(2)*(2*sqrt(2) + 3)^t - sqrt(2)*(-2*sqrt(2) + 3)^t + 3/2*(2*sqrt(2) + 3)^t + 3/2*(-2*sqrt(2) + 3)^t,\n", + " -3/4*sqrt(2)*(2*sqrt(2) + 3)^t + 3/4*sqrt(2)*(-2*sqrt(2) + 3)^t - (2*sqrt(2) + 3)^t - (-2*sqrt(2) + 3)^t),\n", + " (-sqrt(2)*(2*sqrt(2) + 3)^t + sqrt(2)*(-2*sqrt(2) + 3)^t - 3/2*(2*sqrt(2) + 3)^t - 3/2*(-2*sqrt(2) + 3)^t,\n", + " 3/4*sqrt(2)*(2*sqrt(2) + 3)^t - 3/4*sqrt(2)*(-2*sqrt(2) + 3)^t + (2*sqrt(2) + 3)^t + (-2*sqrt(2) + 3)^t)]" ] }, "execution_count": 1, @@ -184,7 +184,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Minimal values of $x$ for solutions to the Pell equation: [A002350](https://oeis.org/A002350)" + "* Minimal values of $x$ for solutions to the Pell equation: [A002350](https://oeis.org/A002350)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0067.ipynb b/notebooks/problem0067.ipynb index 8da0223..a8a7ed7 100644 --- a/notebooks/problem0067.ipynb +++ b/notebooks/problem0067.ipynb @@ -58,6 +58,16 @@ "\n", "max_path_sum(triangle)" ] + }, + { + "cell_type": "markdown", + "id": "f06b0164", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0068.ipynb b/notebooks/problem0068.ipynb index 3d6524c..731a411 100644 --- a/notebooks/problem0068.ipynb +++ b/notebooks/problem0068.ipynb @@ -157,6 +157,16 @@ "source": [ "max((s for s in sols if len(s) == 16), key=int)" ] + }, + { + "cell_type": "markdown", + "id": "e5000191", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0069.ipynb b/notebooks/problem0069.ipynb index 069b77b..2286067 100644 --- a/notebooks/problem0069.ipynb +++ b/notebooks/problem0069.ipynb @@ -51,7 +51,11 @@ "source": [ "## Relevant sequences\n", "* Totient: [A000010](https://oeis.org/A000010)\n", - "* Primorial numbers: [A002110](https://oeis.org/A002110)" + "* Primorial numbers: [A002110](https://oeis.org/A002110)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0070.ipynb b/notebooks/problem0070.ipynb index 4957f59..74cbb7a 100644 --- a/notebooks/problem0070.ipynb +++ b/notebooks/problem0070.ipynb @@ -116,7 +116,11 @@ "\n", "## Relevant sequences\n", "* All numbers $n$ such that $\\phi(n)$ is a digit permutation: [A115921](https://oeis.org/A115921)\n", - "* Subsequence of A115921 such that $n/\\phi(n)$ is a record low: [A102018](https://oeis.org/A102018)" + "* Subsequence of A115921 such that $n/\\phi(n)$ is a record low: [A102018](https://oeis.org/A102018)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0071.ipynb b/notebooks/problem0071.ipynb index d5fdf71..4889e68 100644 --- a/notebooks/problem0071.ipynb +++ b/notebooks/problem0071.ipynb @@ -22,7 +22,11 @@ "Therefore, we just need to find the largest $n$ such that $5 + 7n \\leq 1000000$, which is $n=142856$. This gives us a numerator of 428570.\n", "\n", "## Relevant sequences\n", - "* Numerators of Farey sequences: [A007305](https://oeis.org/A007305)" + "* Numerators of Farey sequences: [A007305](https://oeis.org/A007305)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0072.ipynb b/notebooks/problem0072.ipynb index 6836f44..fe445e6 100644 --- a/notebooks/problem0072.ipynb +++ b/notebooks/problem0072.ipynb @@ -299,7 +299,11 @@ "source": [ "## Relevant sequences\n", "* Cardinalities of Farey sequences: [A005728](https://oeis.org/A005728)\n", - "* Partial sums of totient function: [A002088](https://oeis.org/A002088)" + "* Partial sums of totient function: [A002088](https://oeis.org/A002088)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0073.ipynb b/notebooks/problem0073.ipynb index dfe0167..73d3dd8 100644 --- a/notebooks/problem0073.ipynb +++ b/notebooks/problem0073.ipynb @@ -70,6 +70,16 @@ " \n", "total" ] + }, + { + "cell_type": "markdown", + "id": "192090b1", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0074.ipynb b/notebooks/problem0074.ipynb index 8b09bbb..0084b6e 100644 --- a/notebooks/problem0074.ipynb +++ b/notebooks/problem0074.ipynb @@ -203,7 +203,11 @@ "source": [ "## Relevant sequences\n", "* Numbers that eventually cycle when summing digit factorials: [A188284](https://oeis.org/A188284)\n", - "* Digit factorial chain lengths: [A303935](https://oeis.org/A303935)" + "* Digit factorial chain lengths: [A303935](https://oeis.org/A303935)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0075.ipynb b/notebooks/problem0075.ipynb index 75dff73..203d008 100644 --- a/notebooks/problem0075.ipynb +++ b/notebooks/problem0075.ipynb @@ -102,7 +102,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Perimeters with one Pythagorean triple: [A098714](https://oeis.org/A098714)" + "* Perimeters with one Pythagorean triple: [A098714](https://oeis.org/A098714)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0076.ipynb b/notebooks/problem0076.ipynb index 94e2928..45eeb12 100644 --- a/notebooks/problem0076.ipynb +++ b/notebooks/problem0076.ipynb @@ -70,7 +70,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Partition numbers: [A000041](https://oeis.org/A000041)" + "* Partition numbers: [A000041](https://oeis.org/A000041)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0077.ipynb b/notebooks/problem0077.ipynb index 58fe42a..21bb692 100644 --- a/notebooks/problem0077.ipynb +++ b/notebooks/problem0077.ipynb @@ -86,7 +86,11 @@ "We can see that $x^{71}$ is our first term with a coeffcient over 5000, so our answer is 71.\n", "\n", "## Relevant sequences\n", - "* Number of partitions of $n$ into prime parts: [A000607](https://oeis.org/A000607)" + "* Number of partitions of $n$ into prime parts: [A000607](https://oeis.org/A000607)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0078.ipynb b/notebooks/problem0078.ipynb index ac72054..d4f2085 100644 --- a/notebooks/problem0078.ipynb +++ b/notebooks/problem0078.ipynb @@ -89,7 +89,11 @@ "\n", "## Relevant sequences\n", "* Partition numbers: [A000041](https://oeis.org/A000041)\n", - "* Generalized pentagonal numbers: [A001318](https://oeis.org/A001318)" + "* Generalized pentagonal numbers: [A001318](https://oeis.org/A001318)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0079.ipynb b/notebooks/problem0079.ipynb index 56e6209..7aef579 100644 --- a/notebooks/problem0079.ipynb +++ b/notebooks/problem0079.ipynb @@ -61,6 +61,16 @@ "\n", "tuple(ts.static_order())" ] + }, + { + "cell_type": "markdown", + "id": "242e35e6", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0080.ipynb b/notebooks/problem0080.ipynb index c0d149a..3db3db5 100644 --- a/notebooks/problem0080.ipynb +++ b/notebooks/problem0080.ipynb @@ -81,7 +81,11 @@ "source": [ "If you want to go the extra mile, there are several [algorithms for computing square roots](https://en.wikipedia.org/wiki/Square_root_algorithms) that you can implement yourself, such as Heron's method, which is a special case of [Newton's method](https://en.wikipedia.org/wiki/Newton%27s_method) for solving $x^2 - n = 0$. The method works by starting with an initial estimate $x_0$ (such as $\\frac{n}{2}$), then repeatedly calculating\n", "$$x_{k+1} = \\frac{1}{2}\\left(x_k + \\frac{n}{x_k}\\right)$$\n", - "until $|x_{k+1} - x_k|$ is sufficiently small. For computing the integer square root, this can be when $|x_{k+1} - x_k| < 1$." + "until $|x_{k+1} - x_k|$ is sufficiently small. For computing the integer square root, this can be when $|x_{k+1} - x_k| < 1$.\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0081.ipynb b/notebooks/problem0081.ipynb index cacafc1..e974346 100644 --- a/notebooks/problem0081.ipynb +++ b/notebooks/problem0081.ipynb @@ -88,6 +88,16 @@ "source": [ "minimal_path_sum(mat)" ] + }, + { + "cell_type": "markdown", + "id": "aff1f323", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0082.ipynb b/notebooks/problem0082.ipynb index d975155..59363ef 100644 --- a/notebooks/problem0082.ipynb +++ b/notebooks/problem0082.ipynb @@ -91,6 +91,16 @@ "source": [ "minimal_path_sum(mat)" ] + }, + { + "cell_type": "markdown", + "id": "db7b11ca", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0083.ipynb b/notebooks/problem0083.ipynb index b05a82c..c637125 100644 --- a/notebooks/problem0083.ipynb +++ b/notebooks/problem0083.ipynb @@ -90,6 +90,16 @@ "source": [ "minimal_path_sum(mat)" ] + }, + { + "cell_type": "markdown", + "id": "f1685769", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0084.ipynb b/notebooks/problem0084.ipynb index 11ab97c..40c9659 100644 --- a/notebooks/problem0084.ipynb +++ b/notebooks/problem0084.ipynb @@ -390,7 +390,11 @@ "id": "1c1cc8aa", "metadata": {}, "source": [ - "This gives our top squares as 10 (JAIL), 15 (R2), and 24 (E3)." + "This gives our top squares as 10 (JAIL), 15 (R2), and 24 (E3).\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0085.ipynb b/notebooks/problem0085.ipynb index 655ae72..f7c8608 100644 --- a/notebooks/problem0085.ipynb +++ b/notebooks/problem0085.ipynb @@ -125,7 +125,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Number of rectangles in an $m \\times n$ grid: [A098358](https://oeis.org/A098358)" + "* Number of rectangles in an $m \\times n$ grid: [A098358](https://oeis.org/A098358)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0086.ipynb b/notebooks/problem0086.ipynb index 259a943..22080bb 100644 --- a/notebooks/problem0086.ipynb +++ b/notebooks/problem0086.ipynb @@ -96,7 +96,11 @@ "source": [ "## Relevant sequences\n", "* Number of pairs $a,b$ such that $(a+b)^2 + n^2$ is square: [A143714](https://oeis.org/A143714)\n", - "* Partial sums of A143714: [A143715](https://oeis.org/A143715)" + "* Partial sums of A143714: [A143715](https://oeis.org/A143715)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0087.ipynb b/notebooks/problem0087.ipynb index faa339c..4b399b1 100644 --- a/notebooks/problem0087.ipynb +++ b/notebooks/problem0087.ipynb @@ -80,7 +80,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Prime power triples: [A134657](https://oeis.org/A134657)" + "* Prime power triples: [A134657](https://oeis.org/A134657)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0088.ipynb b/notebooks/problem0088.ipynb index 828d150..a131555 100644 --- a/notebooks/problem0088.ipynb +++ b/notebooks/problem0088.ipynb @@ -104,7 +104,11 @@ "source": [ "## Relevant sequences\n", "* Minimal product-sum numbers: [A104173](https://oeis.org/A104173)\n", - "* Set sizes $k$ with a minimal product-sum number of $2k$: [A033179](https://oeis.org/A033179)" + "* Set sizes $k$ with a minimal product-sum number of $2k$: [A033179](https://oeis.org/A033179)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0089.ipynb b/notebooks/problem0089.ipynb index d91d73e..d88ae29 100644 --- a/notebooks/problem0089.ipynb +++ b/notebooks/problem0089.ipynb @@ -162,6 +162,16 @@ "\n", "total" ] + }, + { + "cell_type": "markdown", + "id": "109ecfb2", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0090.ipynb b/notebooks/problem0090.ipynb index 822f0c1..ae756bb 100644 --- a/notebooks/problem0090.ipynb +++ b/notebooks/problem0090.ipynb @@ -116,6 +116,16 @@ "source": [ "len(arrangements)" ] + }, + { + "cell_type": "markdown", + "id": "7229398d", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0091.ipynb b/notebooks/problem0091.ipynb index 4c2aeaa..4f2c841 100644 --- a/notebooks/problem0091.ipynb +++ b/notebooks/problem0091.ipynb @@ -64,7 +64,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Answers for limits of 0, 1, 2, ...: [A155154](https://oeis.org/A155154)" + "* Answers for limits of 0, 1, 2, ...: [A155154](https://oeis.org/A155154)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0092.ipynb b/notebooks/problem0092.ipynb index 98072df..e30d906 100644 --- a/notebooks/problem0092.ipynb +++ b/notebooks/problem0092.ipynb @@ -109,7 +109,11 @@ "metadata": {}, "source": [ "## Related sequences\n", - "* Numbers we iterate over: [A009994](https://oeis.org/A009994)" + "* Numbers we iterate over: [A009994](https://oeis.org/A009994)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0093.ipynb b/notebooks/problem0093.ipynb index 6702a81..620716b 100644 --- a/notebooks/problem0093.ipynb +++ b/notebooks/problem0093.ipynb @@ -133,7 +133,11 @@ "metadata": {}, "source": [ "## Relevant sequences\n", - "* Catalan numbers: [A000108](https://oeis.org/A000108)" + "* Catalan numbers: [A000108](https://oeis.org/A000108)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0094.ipynb b/notebooks/problem0094.ipynb index fe06c20..32e76f2 100644 --- a/notebooks/problem0094.ipynb +++ b/notebooks/problem0094.ipynb @@ -29,11 +29,11 @@ { "data": { "text/plain": [ - "[-1/3*(780*sqrt(3) + 1351)^t*(56*sqrt(3) + 97) + 1/3*(-780*sqrt(3) + 1351)^t*(56*sqrt(3) - 97) - 1/3,\n", + "[-1/3*(780*sqrt(3) + 1351)^t*(4*sqrt(3) + 7) + 1/3*(-780*sqrt(3) + 1351)^t*(4*sqrt(3) - 7) - 1/3,\n", + " -1/3*(780*sqrt(3) + 1351)^t*(56*sqrt(3) + 97) + 1/3*(-780*sqrt(3) + 1351)^t*(56*sqrt(3) - 97) - 1/3,\n", " -1/3*(780*sqrt(3) + 1351)^t*(780*sqrt(3) + 1351) + 1/3*(-780*sqrt(3) + 1351)^t*(780*sqrt(3) - 1351) - 1/3,\n", - " -1/3*(780*sqrt(3) + 1351)^t*(4*sqrt(3) + 7) + 1/3*(-780*sqrt(3) + 1351)^t*(4*sqrt(3) - 7) - 1/3,\n", - " 1/3*(780*sqrt(3) + 1351)^t*(sqrt(3) + 2) - 1/3*(-780*sqrt(3) + 1351)^t*(sqrt(3) - 2) - 1/3,\n", " 1/3*(780*sqrt(3) + 1351)^t*(209*sqrt(3) + 362) - 1/3*(-780*sqrt(3) + 1351)^t*(209*sqrt(3) - 362) - 1/3,\n", + " 1/3*(780*sqrt(3) + 1351)^t*(sqrt(3) + 2) - 1/3*(-780*sqrt(3) + 1351)^t*(sqrt(3) - 2) - 1/3,\n", " 1/3*(780*sqrt(3) + 1351)^t*(15*sqrt(3) + 26) - 1/3*(-780*sqrt(3) + 1351)^t*(15*sqrt(3) - 26) - 1/3]" ] }, @@ -169,7 +169,11 @@ "## Relevant sequences\n", "* Side lengths in the first case: [A103772](https://oeis.org/A103772)\n", "* Side lengths in the second case: [A103974](https://oeis.org/A103974)\n", - "* The union of the two cases: [A120893](https://oeis.org/A120893)" + "* The union of the two cases: [A120893](https://oeis.org/A120893)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0095.ipynb b/notebooks/problem0095.ipynb index d604a34..6d658b7 100644 --- a/notebooks/problem0095.ipynb +++ b/notebooks/problem0095.ipynb @@ -82,7 +82,11 @@ "\n", "## Relevant sequences\n", "* Smallest members of amicable chains: [A003416](https://oeis.org/A003416)\n", - "* The amicable chain containing this problem's answer: [A072890](https://oeis.org/A072890)" + "* The amicable chain containing this problem's answer: [A072890](https://oeis.org/A072890)\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0096.ipynb b/notebooks/problem0096.ipynb index a6d35f4..648545b 100644 --- a/notebooks/problem0096.ipynb +++ b/notebooks/problem0096.ipynb @@ -326,7 +326,11 @@ "\n", "Algorithm X can be made more efficient by applying a property Knuth named [dancing links](https://en.wikipedia.org/wiki/Dancing_Links). This concept boils down to the fact you can efficiently re-add a previously removed node to a [doubly linked list](https://en.wikipedia.org/wiki/Doubly_linked_list).\n", "\n", - "By creating a special data structure ([shown here](https://commons.wikimedia.org/wiki/File:Dancing_links.svg)) that takes advantage of this property, you can create a very efficient implementation of Algorithm X. Such an implementation is deemed DLX, and *this* is the default algorithm that SageMath uses in its Sudoku solver." + "By creating a special data structure ([shown here](https://commons.wikimedia.org/wiki/File:Dancing_links.svg)) that takes advantage of this property, you can create a very efficient implementation of Algorithm X. Such an implementation is deemed DLX, and *this* is the default algorithm that SageMath uses in its Sudoku solver.\n", + "\n", + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." ] } ], diff --git a/notebooks/problem0097.ipynb b/notebooks/problem0097.ipynb index 5592dd2..50de6ee 100644 --- a/notebooks/problem0097.ipynb +++ b/notebooks/problem0097.ipynb @@ -31,6 +31,16 @@ "modulus = 10^10\n", "(28433 * pow(2, 7830457, modulus) + 1) % modulus" ] + }, + { + "cell_type": "markdown", + "id": "0454e1f8", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0098.ipynb b/notebooks/problem0098.ipynb index bc15f25..6432836 100644 --- a/notebooks/problem0098.ipynb +++ b/notebooks/problem0098.ipynb @@ -268,6 +268,16 @@ "source": [ "max(max_squares.values())" ] + }, + { + "cell_type": "markdown", + "id": "69a1b066", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0099.ipynb b/notebooks/problem0099.ipynb index d1a24bb..5f3f4a6 100644 --- a/notebooks/problem0099.ipynb +++ b/notebooks/problem0099.ipynb @@ -42,6 +42,16 @@ "logpows = {(x, y): y * log(x) for (x, y) in pairs}\n", "max(enumerate(logpows, start=1), key=lambda x: logpows[x[1]])" ] + }, + { + "cell_type": "markdown", + "id": "6a4a2222", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": { diff --git a/notebooks/problem0100.ipynb b/notebooks/problem0100.ipynb index 59ec40d..aa10993 100644 --- a/notebooks/problem0100.ipynb +++ b/notebooks/problem0100.ipynb @@ -21,10 +21,10 @@ { "data": { "text/plain": [ - "[(-1/8*(12*sqrt(2) + 17)^t*(sqrt(2) + 2) + 1/8*(-12*sqrt(2) + 17)^t*(sqrt(2) - 2) + 1/2,\n", - " -1/8*sqrt(2)*((12*sqrt(2) + 17)^t*(sqrt(2) + 2) + (-12*sqrt(2) + 17)^t*(sqrt(2) - 2)) + 1/2),\n", - " (-1/8*(12*sqrt(2) + 17)^t*(7*sqrt(2) + 10) + 1/8*(-12*sqrt(2) + 17)^t*(7*sqrt(2) - 10) + 1/2,\n", + "[(-1/8*(12*sqrt(2) + 17)^t*(7*sqrt(2) + 10) + 1/8*(-12*sqrt(2) + 17)^t*(7*sqrt(2) - 10) + 1/2,\n", " -1/8*sqrt(2)*((12*sqrt(2) + 17)^t*(7*sqrt(2) + 10) + (-12*sqrt(2) + 17)^t*(7*sqrt(2) - 10)) + 1/2),\n", + " (-1/8*(12*sqrt(2) + 17)^t*(sqrt(2) + 2) + 1/8*(-12*sqrt(2) + 17)^t*(sqrt(2) - 2) + 1/2,\n", + " -1/8*sqrt(2)*((12*sqrt(2) + 17)^t*(sqrt(2) + 2) + (-12*sqrt(2) + 17)^t*(sqrt(2) - 2)) + 1/2),\n", " (1/8*(12*sqrt(2) + 17)^t*(sqrt(2) + 2) - 1/8*(-12*sqrt(2) + 17)^t*(sqrt(2) - 2) + 1/2,\n", " 1/8*sqrt(2)*((12*sqrt(2) + 17)^t*(sqrt(2) + 2) + (-12*sqrt(2) + 17)^t*(sqrt(2) - 2)) + 1/2),\n", " (1/8*(12*sqrt(2) + 17)^t*(7*sqrt(2) + 10) - 1/8*(-12*sqrt(2) + 17)^t*(7*sqrt(2) - 10) + 1/2,\n", @@ -198,6 +198,16 @@ "source": [ "b, t" ] + }, + { + "cell_type": "markdown", + "id": "10873881", + "metadata": {}, + "source": [ + "#### Copyright (C) 2025 filifa\n", + "\n", + "This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)." + ] } ], "metadata": {