计算机二级练习仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

867 lines
69 KiB

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 实践7 数值数据的计算和典型算法"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1. 熟练书写算术类型数据的常量表示、变量定义、能运用算术运算符 \n",
"2. 熟悉math模块和random模块的函数。 \n",
"3. 掌握数值数据的典型问题的算法设计 \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1.基本数值数据类型和运算"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"(1)混合运算 \n",
"查看下面表达式的运算结果,思考在表达式的计算过程中哪些发生了数据类型自动转化,哪些发生了数据类型强制转化。 \n",
"总结不同数据类型混合运算的转换规律。 "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#不同的数据类型进行运算时,会进行类型的转换,整型数据和浮点数据相遇,整型数据转化为浮点类型。\n",
"23+24.5"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#当自动类型转化不成功或出现系统错误\n",
"23+'3'"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#但可以通过类型转化函数完成数据类型转换,然后同类型计算。\n",
"23+int('3')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"'hello'+str(123)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#int函数还可以完成对浮点数取整的功能\n",
"int(23/3)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#内置round函数的功能更为灵活,可以按指定位取整,四舍五入。第二个参数指定取整位置,n表示小数点后n位,缺省表示没有小数点。\n",
"round(23/3,2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"round(23/3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"(2)使用赋值语句创建变量 \n",
"观察下面变量的创建,识别a,b,c,d,f,g,h变量的类型。"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"a=23.5\n",
"a"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"type(a)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"b=a>0\n",
"b"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"type(b)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"c=None\n",
"c\n",
"type(c)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"d='23'+'3'\n",
"d"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"type(d)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"len(d)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"f=2.4-9.18j\n",
"type(f)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"g=8.1+5.2j\n",
"h=f+g"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2.熟悉math模块和random模块的函数\n",
"### (1)数学模块库函数的使用"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#导入数学库,使用math前缀访问sqrt,log10函数。\n",
"import math\n",
"math.sqrt(2*3+3*3)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"math.log10(100)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#另一种导入数学库的方式,可以直接使用math库函数和常量。\n",
"from math import pow\n",
"\n",
"#幂函数\n",
"pow(2.5,2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#导入math模块中所有的函数和常量,不建议使用\n",
"from math import *"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#π\n",
"pi"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#自然常数\n",
"e"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#向下取整\n",
"floor(2.5)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#向上取整\n",
"ceil(2.5)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#求绝对值\n",
"fabs(-23.56)"
]
},
{
"attachments": {
"image.png": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAAFBCAYAAADJ1D89AAAgAElEQVR4Aeyd7ZUruZFt5ULb0C60D/o7/2SDXJAH8mA8kAWyYBwYB+TB+NBv7Xq9dc8NIZOZSbKKVXWwFhtIID4PAoFg1pX4p9/bikARKAJFoAgUgSJQBIrAHQj86Q7eshaBIlAEikARKAJFoAgUgd9bUDYIikARKAJFoAgUgSJQBO5CoAXlXfCVuQgUgSJQBIpAESgCRaAFZWOgCBSBIlAEikARKAJF4C4EWlDeBV+Zi0ARKAJFoAgUgSJQBFpQNgaKQBEoAkWgCBSBIlAE7kKgBeVd8JW5CBSBIlAEikARKAJFoAVlY6AIFIEiUASKQBEoAkXgLgRaUN4FX5mLwPsi8K9//ev3P/3pT28fxm2fH4H/+Z//edvPX3/99d/OuM/M/eMf/3hb/+tf//rvdQeu/fnPf3bqrYePOGF9r/39739/o4M24wl5zO017FFH2guPayub92Q+cw2f8BebwEebeXYPJg7PtKeyi8BXQ2A/Y3w1b+tPEfhkCFgYcNEd+XAxtj0OgSw0nlUcqYOCxwLRfhaUPPOxSbdVUN6KBwvKyW+s7fkMj3T6oG3MM55ysVub5b3V6yu99t7iYX3aLg/z2JayHK/sTf0dF4EisI1AC8ptbLpSBD4cgXkp+1aFyzHfKHlJbxUQXvheqvTwHGn38CpfGVNn+oNNr3iha/ssUPTt3l75+o6e3Kc5Xu07vMbApPeZomk2deWa9sC3avIo90if2Gmn/qKDOEcOumkZFysbVnMWhdqTOCU9dJ4r/d7yyfXk77gIFIE1AuuMsabtbBEoAh+MQF60WxfmNDF5WMvnWzKS9iwv9FmccNHPgtJCgnkv9Sw+pi8f8awPj7YrsbUIoqeIcQ18LMBW+l3L4gyMxBXbWZvY61PqZQyf+zDX1I99rCHjVtM+eaF3Lm1Oe6HRf/TstaSDdqsA1ObpE8/ioy79x6YteXs2da0IfFcE9k/rd0WlfheBF0Fg6+JfXYx5aaf5eekypnmJ3ioK7uFNG7ykKSZsq8JCv6R5hd492ML3XhvFQWzESixmz55o01zTxizQ3GvlY6/80NHcZ/mQa6xYjFlc+XzLTmQkrTjp77R961k+++TXbv3GV8fSZ5/+MYZWefKJl/4nf8dFoAhsI9CCchubrhSBl0PACzQv/CtG3nNpXuHlssbmLGqcs1DBDy/8W4WuNoiDfKmDcX4sGFLvah07LIS21lMfNPhlkSYPNEm3VaDoC7TQaF9ildikHIshZGRTLzYpP+VpK3S0jCvsFyvWxCL3iXl1K+NN0B//UX/a6rp8abP07nvaI582w6cMbdNHbFcWY+XJy5o8ynC/tEdZK9u1pX0RKAL/iUALyv/EpDNF4CUQyIvRS+9I7yW65YSXK0VDXtwr2Vy62ZKX+RWPc1mArIok55LOy3zqTRscp+1ZKCBXOWKhLosEsaWn+cxYH12Tl56mbO2WFz7XLFZYywLmTUD8J30AN/jVJ46z1wfEqAe+bFs2SaOPUzZyXFOm9sw9Ubc4KZte/Wmr6/IpP+nRTUtc5NMu98F5fEBf2qF+5aUP0GtX6mGeJq/y2xeBInAMgRaUx3AqVRH4cAS8iLn4KFK8LJnPy3nPUC/lo/Qp6x7evNCV6ZyFGfPYhX/4dKtlMWCBsMWjLulm0aBe1qXVBv1mXp1ZvLgvrCOHNenwba+gVBc++9E2n2evD/iqbvTqw6TPZ+3WJ5+1FxnKhA86bRQPMU661JHjtPUMX8qQT5uxh5bYaqNrYggPLeXNMX7oi3slLm/M/U8RKAKHEGhBeQimEhWBj0XAC4/L0EuPy9NLlnmKgb0m7S26lYx7eJHnhY8fNufwxzYLAedXfRZBc117Z/FggaMe+SzGWHeMDJqysNd9SAxdRybz9NqWRU/6jlxliQP9bNqp3XNdGSt79mIibUam9ionY4w5ZE370xb5sfdWU7a6oNdPMVceem1ps/sqdj7TQzflKSPn9UtsU8ZqL5TRvggUgTUCP07rer2zRaAIfDACXnxeeFyA8yL1It4y1cs4L3Hk7RUJyrqHVxnam/pmMbQqIuRf9dKnT9KJlc/qt3iwsHBdjBNbbdV/ZDhOnTnHPLK1ba+gdE1+5Ftsaf9Wr91iKB369dU5/ZCHXp3YStPe9Et6sYLHJr869vrkg1/76G1Th/Yg1zZ1KhcaZWG/e8C8NMgQK2iVn/5q1+RTf/siUAT2EfhxWvfpuloEisA7I8Blx+XGh0LDS5dxXn4832rIyMvTyzUv3C0Z9/AqU3unrfqEPdLQH2mrogA+57F7Pk8s1SPW8IqNeGmjdkkLHc11sGSNZ23AXz7olV6d9vCxrnzntYM1PtnkcU1c5cEObYBm6p78ytHn1JX+OS8/azR1+czcii/n06ZJq7z0W53ipK/Q6P+bMRu64UsefUYXjXXnlNO+CBSB4wj8nKWO85WyCBSBJyKQF6oXnpeul17SOLcyaXWJSq/sFR9z9/DCbxGgPnv1Th9WBc3KNuiUZW+hAb1FXK45/q//+q9/84JpFhI803IudVm4zL0Apy1f1Uu/avKl/TmXe7Didy59dk452jDn9dd9WOEvr3uGDOVOfp+hWfGph7WUJ57ITfnQ2dSZOLk2+ynP9dQvrtBKn3utLfK2LwJFYB+BH6d1n66rRaAIfCACXn5csPPSz7V5UX+gyVV9EIEslLKgocixScP+8sliZ65loSa/BZPxIY86LLTms/pmzO3xZ2E7iz/9m/Pah1zW1Ks9+DHjXJq9Hnk09UorLjmvTWm/XyCkb18EisA2Ai0ot7HpShF4KQS43Lz0XsqwGvMwBCh4soh6mOAnC7LAxP69hm8WeXt0j17b0rs1/2j9lVcEvgMC+6f/OyBQH4tAESgCRaAIFIEiUATuQqAF5V3wlbkIFIEiUASKQBEoAkWgBWVjoAgUgSJQBIpAESgCReAuBFpQ3gVfmYtAESgCRaAIFIEiUARaUDYGikARKAJFoAgUgSJQBO5CoAXlXfCVuQgUgSJQBIpAESgCRaAFZWOgCBSBIlAEikARKAJF4C4EWlDeBV+Zi0ARKAJFoAgUgSJQBFpQNgaKQBEoAkWgCBSBIlAE7kKgBeVd8JW5CBSBIlAEikARKAJFoAVlY6AIFIEiUASKQBEoAkXgLgRaUN4FX5mLQBEoAkWgCBSBIlAEWlA2BopAESgCRaAIFIEiUATuQqAF5V3wlbkIFIEiUASKQBEoAkWgBWVjoAgUgSJQBIpAESgCReAuBFpQ3gVfmYtAESgCRaAIFIEiUARaUDYGikARKAJFoAgUgSJQBO5CoAXlXfCVuQgUgSJQBIpAESgCRaAFZWOgCBSBIlAEikARKAJF4C4EWlDeBV+Zi0ARKAJFoAgUgSJQBFpQNgaKQBEoAkWgCBSBIlAE7kKgBeVd8JW5CBSBIlAEikARKAJFoAVlY6AIFIEiUASKQBEoAkXgLgRuFpR/+tOffu+nGDQGGgONgcZAY6Ax0Bj4HjFwpbI8VFBeEVyeIlAEisBVBLi02opAESgCReD9Ebiaf29m7auC3x+CaiwCReCrINC881V2sn4UgSLw2RC4mn9bUH62na69ReAbIHA1oX0DaOpiESgCReCpCFzNvy0on7otFV4EisAVBK4mtCu6ylMEikARKAI/ELiaf1++oPyf//mf3//617/+/n//938/vP3999+d/9e//vXTfB+KQBH4/AhcSWjkhL/85S+//+///u9PADDPh0Ye+e///u//yCeuzTyTgsw5ezRJ33ERKAJF4DMicCX/4ufDC8p//vOfv//973+/+fnb3/72+5///OdlYqdIRAaNJP7bb7+9jZEtD5fCr7/+uuR/I+5/ikAR+LQIXElo5opZ8JFLKDRt5I2tL6Lkl3/84x+S/tQrn0m+5G7R/cTUhyJQBIrAJ0PgSv7FxYcXlCTzmdAnliRmkjpF5RYta3ygJcnT8u0D4yb0iWyfi8DXQOBKQstckSj4Bdc588mqqORLK7pXaymfvPXLL7/8+82nstsXgSJQBD47AlfyLz4/vKC8BaTJfauQlJ8/W/EWwCROos8/Za3eTt6Sqez2RaAIvDYCVxKauQLP/CsH+YYCko+5h9zBmIKQHDMb66uW8lnnGT3NOyu0OlcEisBnReBK/sXXpxWUJNlMtPyJmqTuN3+S8arBY+KnJ+H7NpM3lvz5m+LSS0Fa1rggsuhcye9cESgCr4/AmYRGbpm5It8emiP02jeUPq968oh89uYin+nJR3wy163kda4IFIEi8FkQOJN/06enFZQoIdFa4JF8KfpozGEwheGqWXSSpLkYkOMc9MhBno0LJf+NlPPti0AR+JwInEloFnPzDaKeWwD6fEu28jLnwMuX2CPFqHraF4EiUAQ+IwK3cuSWTw8vKCnuLBz5N44kYRK0SZ1ikqRsoUlRufW2EjpkUVDydsBkzjgLSmVvOdn5IlAEPhcCVxLaVkHJfBaHqy+yzJlHyFnmJ1Ejl/HllrWtfCVt+yJQBIrAZ0bgSv7F34cXlCZlwfRPT8zzFpE+m/M5x5hCkiSelwQFJfTMUbjaoM1n59sXgSLwORG4ktAyV1BAkivIDfSrD8WhhSZfen0zOXUzDy05hhxEXkJuWxEoAkXgKyIwc+BRH59eUJKEfSvJm0aScTYTvXO+zfQNgW8OWGdNfvi8AEjyfWsggu2LwOdH4EpCIwdQ+PEXDMZ8yBM2xpkntnTMeXMUvP6VhDxEPjMHqaN9ESgCReCzIzBz4FF/nlpQ8u3ft4cmZRIxSdmC0XkNdt5n3mqu3gZQaFpc4nwTu4i1LwKfH4EzCY2cQRHpv7fW+0cUlMjw32dnQYkOdLaoFO32RaAIfBUEzuTf9PkpBSUJ2GRrgZiFI4UgBpvwWbNBLy09dP7Zyj83QUsBiR4KS5J6WxEoAl8HgTMJjbxAviEX+AYRJCwAzSfS+bylw3lyETx+WVWeKDNPEYu8tiJQBIrAV0HAHHjWn6cUlCZsEzFGOaeBFolznnX/XVOumbxTJoUkCb//flJU2xeBr4HAlYQ2Cz6/sIoI+YQ525YO5skzM69M+chBJoVsWxEoAkXgqyCwlRtv+fe0glLF/mmat4kk32wk7Swa5xr/HsoC0gI0aUj4Jv+c77gIFIHPjcCVhDYLvisFJV9m0e1fVhLFKT/XOi4CRaAIfBUEruRffH96QYkSCj/+NLRK0lsFJXzQw8tbSBzMNwEUmryhpOj031J+lc2sH0XguyNwJaHNgu9sQUku4k/n8NHPfMW8/57yu+9P/S8CReDrInAl/4LGuxSUKPJN49yCvYISWtb9t5L+GyhkMabAJOlTrPIGc0vH1NnnIlAEXhuBKwltVVCSJ8wx5g+fU4d5RlTIJeQU/7KCbPIN/fzAm192ldG+CBSBIvAZEcjceMb+hxeU/rtGk/at3oQ/jeato28Lcs3E77+zZM2iksKyiT3R6rgIfE4EziQ0zjy5guKPfGKj8CNfbLWpY/WFlDzDX0mUTY6BLz/obisCRaAIfBUEZm486tfDC0qSexZ7twwhWWcRCC/F5JThn7+5JFaNy2D+iWpF17kiUAReH4GzCY3zz5fZzAHkkXyeXu8Vm5O2z0WgCBSB74LA2fwrLg8vKBXcvggUgSJwFYGrCe2qvvIVgSJQBIrA/0fgav5tQdkIKgJF4OUQuJrQXs6RGlQEikAR+GQIXM2/LSg/2UbX3CLwHRC4mtC+Azb1sQgUgSLwTASu5t8WlM/clcouAkXgEgJXE9olZWUqAkWgCBSBfyNwNf+2oPw3hB0UgSLwKghcTWivYn/tKAJFoAh8VgSu5t9DBSXC+ykGjYHGQGOgMdAYaAw0Br5+DFwphg8VlFcEl6cIFIEicBUBLqy2IlAEikAReH8Erubfm1n7quD3h6Aai0AR+CoINO98lZ2sH0WgCHw2BK7m3xaUn22na28R+AYIXE1o3wCaulgEikAReCoCV/NvC8qnbkuFF4EicAWBqwntiq7yFIEiUASKwA8ErubfFpQ/MOyoCBSBF0HgakJ7EfOfZgY/Pcvviq9+d/xpSj+ZYLDhN91XP7v5t7/97e2nfT/KJX7u86N+8nP+NOmjMOC37PHpbEzys8srLJw/K+9R/lTO72//I+wrOLSgvIJaeYpAEXgqAmcLyn/961+///Of/7xpEwUZFyBF2apRiHjpH+m3CpeV7EfMYfuvv/56+vJ+hO7PIoM9pnhaFSS//PLL7xQsH9XYu63Yu2oTMYHPt9o8U345yTgHt3/84x+3RP20Dv9Rn9CpfPgo8Gn0jpF1VN5PhvThYQjMWDkquAXlUaRKVwSKwLshcCWhcbF6KWEozxSZFBDMe3FyqfFZFRxn9UK/kvMMoLCZgog3b/jStkYAbFZvJ4kFvgB8VMMu3xJaVO3Z4ps6+IjfLduJQb5Q2bbiccY28TRlTlnK3Ouxj8/RBgbshXzYix3aTYynP0fllu5xCMxYOSr50xeUfOPj4vgujYM3k8AzfedgZ5IB6++E9zOxrextBK4kNIoILiMb54RL80w7q/cs/RlbJi0XsW/XLJQnTT5TtGAfn/fMGWnDM8b4sipg/OLgOjRgZgyQt3jzZSHj+pHi7l4/yKN+GUAWBeKq6E092ik9zxRdfqHgGZ+4A6WlR48+pzxj1cJtq6BMniNjdR+hhYZ9AnP5eNYmfFvFqutHdZTuPgSMlbNSWlCeReyD6TlsqwP3LLNIWKmPJESw9RvksxCvXBC4mtAyLonb1cW6h/BZvWfp93TvrVGAzC9yPO8VQxaUK7nYnZ/EbUXPHHgmz57ulKEd0/6kybE5Rl0UTNmUl3OMLVByHhkUKfiXeUwa5ijOn90obBMvCiR07xWV6Q+08IAh9rpfPO/JyDeBYIFMbIHvnoIyz1XauVf4Yae09PjEh9im0Mcm55OONWzek/3s/ftu8omVK+0m11XBV4y5wtM3lFdQO87D/mcihNNvxMellLIInEPgEXmHy8pLKi8oLrCtCyr1+sYreZGX/74r6c95eJya85f25mVucbC6bFeFF4UINuOTDZ+Ys0hxPnvOPHjalD1zg+v28CGbD3puNeWmj8jgkw15U7f7NOl4RvfKP/BLXcn7qDG69R0btIOet4nE2arpD3TyU5Q5Zh77paNnj1YFMvEBZtnwO/eUtUmT9I6xATpxUz/r7Mlegavv8CIDXzJ2p/2ctS18tKf94xE4EgcrrT9H2ILiquCFqKdMkWg8YE9R8GJCOXAzCTzLRJO7SUA94D0TvGvti8AjEDiad7iMvNBmocg58dJLm7igsijMtdSr3Fyfc0mfdGfG+IA9ebHKzxmca+jUL3jwk/M4CyzPr7Lot84uMvFt1ZQz88CtXIQu8Tmap1d0Fh/6jI0r3XNvoBMreKf9ub7y++hcFnmTBwwSV+ygiHSv4cXnVazqD/ivbCcu4Mu2ksM6RaZ7IT22TP5JI232nDNstmmnz/g8Y9E1enx3n6G1KMbHKWvLn5TX8eMROBIHK60PLSgJDgKAoMCgNMpn+zwg0BNgBLjr9Dxnm+sErYGZdMylHORnY5057JXOg5W2Q7fXtNuEiyz9mjakL9JDq376eQjnOvqwU1u1jeeUg1/ZWGdu5Zu2yJ988KwwkEdfk6fjIvAIBIjHo8045Izl2WC8eltDTOd5TD2pl/PCJ9ucS3roKFalOdpzoSJnnltkrd7OTJ3oRRfz+KbPntO0n/Wph3WwSuySZysPqDNpt8ZbepPefDfzIDT4hj7bSjdzSSOfb8wohIwV5SDXWKDQUcaZngIROWk3stCnbPXNGGUeWopDZLAH2qsNyHVOOewxsQGu0tHzPHXCgy1iCB06V7ZAs9fgm/9GU/3ySWMcOk+vr/gjH3OcAWxknDHP/PQ95XX8HARuxcGW1v3oOfgKXOEkHg+Fc/TM5UGeCYrAgobDYFOWzyYbaG3QwwetbeqXL2nkU5Y0k3fKVof9ym7W5qGWTj4TPfJt0iROUz/JZtqILj7ZJo18iQE0fJKXcV4qjPNZHSQieFeJS5r2ReAeBIivs21ekMQzFxTnzcuenst7q6VeziSfbHMu6aHL85t8Z8b4gZ4tWVOnsrl48/I1z7hOD2/mAdc455kLnKffWsNG5G3ZmTKQvdKbNOYV9yrXpt36lrqxB1vdI+1TDthQoGRDbuaxlJd0Z8bYRlFE7M02YzTXKcCSRz+gIWZZ10fkrGThf/qjfPDHVxr7gLwVvzTyzR7f5vlJO6WHjsIz45ExtPrI2KIT3B1TWNpu2SNd+8cicBX3m1n7jGAC9Qi9yUAICKzJR7Az5+FY0cCfiWqLZs4njzZwEPlkwx9ot5pybyUhfZFO/31GPmP8ZY22omE+7dyimfPJ8yZ8409f+iPNCifWpq3Sty8Cj0Jg5oMjcucFmWeXy4xzwFyeuyk39XIe4KH347N8Se/cs/ujOs0DaQ+8+DLbXq5b5Q/4lb+Hp3q2conr9OZJc36uTf4VrXuUfBMr5Fi4QDfXk/cZ4xmjezrSH2ymkANri+KVLPZq4sdz3s0UdL49hT7bHh7wgZ8FoXxpp3P00PKxZXHJHAVn7oV02Iaf2K2vrrV/HwT24mDPgocXlBlAKiY4MHB+TEQE5HRAHpIWbSupoY/DQttKijPxJc8b44b8LXnyrOx2bfrKswd92pM8yKRt6U4ctvSjJ/Ulj7pW8qc8ZEA3m3ujrXO9z0XgXgSIvbONuPeC5KKa8Uksexbmpaiu1Av/lDHnkl4Zz+6P6jTPpD3wrs40uKxyN7xba2CBPPN46pnjVc6dNOYtc36uT7tXtHNv4J9YUZSl/LmeOp8xzhi9JX/6o63GOLLAVTp6npnPxn6bs3PeIjXn1JFzjpG/KgDVL5298ac9nknosYmCUt780zZ0vOGlsMy3lcpt/3wE9uJgT/vNrH1GMEEykxLBhAwCx2agmYhYm3o8AB5+LwJl2GeiWumHbupLHuWs5G/Jk2fPbnhtYuDBmvZIlzht6U47V/qRNfUlj7pW8qe8FU7wz71RZvsi8CgEZj44Ipe4J9ZpvuWQj3j3THJZzT/HSZd6eaNijnJ9Pie9NM/uj+o0z6Q9W2d6lSPkW+UK1ma+kH7Vb+lN2r28gs/os80cxzzrScPcxAq+/DIx15X/rD5j9JYOfLGgAhvf1hnjK1msMW+DTxnTV+Tnv1eEZ9Ioh7PgXeyc/Qp31/KcgbvYp50UkPoEHzTEC5/5VlO57Z+LwFYc3NL69IJyldScMzkTkNOBmVy2khp8XhQrOQAw51fJjYDOoIZvS6egTrnMc5ixSd9yzoM+/VcefMikrWQzj+3auSVnzh/1bepc8WGDPurPm8H9TxF4IAIzHxwRTTwSs/ScARqXE+fYZ+UwN/8tGGtn9Z6lV/89/VGd5oHUtZXTkGnuSXrGysmcxvxWfpj8PK9y7lG6Vb5Z2YT904dbWN1aX9l4z5wxekQGvlAM0oMfvDRwp61kGf9vBH/8j8Qs4qavFKhzT5MmsZyFp/LpoUvaXFu90Zx2Y4e+ycvZtIB2rv37IZBxcEbr0wtKAgXjTOgWiswZzATjdEA6+ZSTgcshg48kSZPHZ+a2+JIGulVynMkXfXxse3anndjIx0OzSobIhEa+lS/YCI0JRZ583uJLGvimb8xNf1Y00G3Zz1pbEXgEAsT5mUbcE79cwF5ixClzrK2adLnmGYTvyOesnanr6vioTs9p6lnlQ/OKdPLR29CZOQRsmDOnQUduTBp5XZs51/lVTk25Uzd86k8d7lfO7WFlrkz6Z4/xawujqXvlDzTypyze5EEPlvlWL8dg4VlgfrUfiRfyjrQtO/d4sZ2zStG4spm5Ob8nr2uPRSDj4Izkm1n7jOCtAoSAQ44fE5bB7Xoa7mHPpCafcjxQ82C4bp8y0EGgTh4OqQdVO6Y/BrnrK7tZm3b6jL25rv/Kw15k2qDXB3rkYNO0E7uSLmUg64hv0E1/tHvaOXHR3vZF4FEIEM9HG3HLxeSbGApFYpR5ztCtT8b3Gb3Yd5b+qE97dEd1en6nrJlXyB/Z5KPPht78JG7QISdzE3uQ9DlW7sypzJuHpEfObKucBh/z9H6QkS1tJk7e+y0Y2CdGadsc64Pz2O4XJgpCZEFj45n1rQYW0ND8H/hMWv5ELUbY6XjS5bxnbdLsPXNWsQH7iTPigB6/0EvPM/bsvR3d09G16wjMc3NU0s+nbcF1VfBCVKc+IQLs/7xYOPyZyD6hWzX5xRE4k3eIz7zgdI15/3SGvNWHiyvb0cteno84B0exwf+jtPpztQd/dM1ccVXeLb6VLvZi7sf0n/02JihWJv0tvfeuXy0oKcDIu8YrzxTEfJA5P9KlvWABHQUafKtGcYgeCm3wWcmBj/0GR2QqdyVvzmE3mFP45pllHt3MM7YZw9izZYu07R+HwDw3RyW3oDyK1Del45DnJUtCItgyGXxTaOr2ExG4mtCeaNJLiPbiPWKMl/ER2ntpZp64V94e/5ZfFEmz6CBfrRqFCzZn8bKie/ScBd0RubPwW9lKHoZO/CkGydcrWooy9E+MjtiyRWNxuLWe8+hl76Zt2IScrTsFvsmTcjt+PAJX828LysfvxZeSyCHPApLExaetCDwTgasJ7Zk2fTbZFl5gmV8Kn+FH5ohnyE+Z+PLebxZTf8dF4KsjcDX/tqD86pFR/4rAJ0TgakL7hK7W5CJQBIrASyFwNf+2oHypbawxRaAIgMDVhFb0ikARKAJF4D4ErubfFpT34V7uIlAEnoDA1YT2BFMqsggUgSLwrRC4mn9bUH6rMKmzReBzIHA1oX0O72plESgCReB1Ebiafw8VlAjvpxg0BhoDjYHGQGOgMdAY+PoxcKXcPVRQXhFcniJQBIrAVQS4sNqKQBEoAkXg/RG4mn9vZu2rgt8fgmosAkXgqyDQvPNVdrJ+FIEi8NkQuJp/W1B+tgg3NKcAACAASURBVJ2uvUXgGyBwNaF9A2jqYhEoAkXgqQhczb8tKJ+6LRVeBIrAFQSuJrQruspTBIpAESgCPxC4mn9bUP7AsKMiUAReBIGrCe1FzP8yZvBLWfxM4SMav26z+oUbflqPX9/a+um9R+jek8HP+vHrO1d+ktDf0p7ywYyfRDzatvQzv/XzkUdll64InEXgav5tQXkW6dIXgSLwdATOJjSKES73W43LmeLlL3/5y5LUn/Wz+LnVbxUCS+EfOOnvJV/5TWQwwE8aRdIeJvyW9FZhhgx+DnI2ZMJ3xbYp68ozNv3yyy+XCjewWBXc+DML5OkffM4R74z5YAu84Mj8Fp5XfC1PETiCwNn8q8wWlCLRvggUgZdB4EpCo1DMy51nikwKFuYthCiu+HiZp9Nn9UK/kpMyX2UMBr/99tthc8AN/CxyYJxF0hS2h8dWEY9N7MdHNH3DT+Lj1l6ybhzRUyTzYYx/xBwFIAVl0rGGnykfne6HcQePRTf4I6+tCLw3AsbjWb2fvqDk4H6nQ2cCY6NJ7mw8SehRDVnouKcdsQmaj7pE7vGtvO+DwJWExkXO2x0bcXw2xs7qnfQUA8zxuecccQ6nbP2yVw/9rUIPHounpM0CR7n22GCBnjyur/qVzeBAjuajTLFBLnvGvB8L3z3bVrqvzKHLQhdbjtwlxBR82IsffBgjB5tZoxi0sb4Vh1lQot9iEl7kTb73wES7239fBFbn+AgaLSiPoPRCNCYwTCIBsfEks0c15GVSuyL3iE0kbnxpKwIrBK4mNM6Ebe8il2b2Z/VOegvKKffsM2d6yl7JoOCALv2msIZ/9bGoY43Ch2Ju60+q8q/0bs2tbJ5zyLWIw55ZNPFsobWl5xHzviHMIo39u1VUYp+5KzFyH8QYG5HNfOpgnoJTXnpoLFJ5SYKOWWhDx9y9+fkR2FXG10Zgntmj3ragPIrUi9BlQXnVJBIeSWu2R12GBCPJb6+RMKHLi3CPvmvfC4GrCS1R4qx4ueflzcU9//woX+rl0veSlx95FkPwJD3PjzpD6JuytTH7rXN061xR4IABvhwtKFdYkkdS18rmOSeW6AXf2Sj0LNjm2qOe0Y3t+g6ONuMj/XKNHlrt0xfm8ZP9B1vkMuYDbrOlbGTBqy3QTgxYo5hsKwLvgcA8s0d1tqA8itSL0JF8TGZXTSLBrQrKR8jGJoKRRHurHaW7JafrXw+BowmNy9tL3ULAt0HEcxYKokShmEWh8/SpV7m5PueSHrpXKSjT5tUY/1eFTtJOX1d4zjeJEw/kzTnl0mdhpW7m781xyMK/LNKUzxzyc41n9NqIJd8QGk+uEVPkT+2Ud/oJxrPgVoY9MtAFL3EpPXN8bFnEOte+CDwLgRnLR/U8tKDkAOfhSqMY5ycTCYeKg8ShSZp5Gcx1kjd8MzEyl3IyUQAM68zBJx1205h3Drq9pt1eIvDp17QhfZEeWnXRM59trqMPO7UVWviYtykHGmVPeufttY3nlKXMPV+kyV45ie8Ky+lLyuj4eyNADB1tnjniOGOdMW96ZiMWjfm5lno5C/M8zLmkR5Zne8p1Hno+aeek5Rk90M0cMHMEfki3krOa41zOnLmim75i88Rt+oEts8055KKfQg3/snCCl/WUyx5qy9GeYg698020smaRuPINWopK5FDs2ShEWWMvWEcXuDBnQz66ibUsXF2nh1/fxSj9Q56xzRg9bUXgPRAwHs/q+s/TPyScEWwBkckAccjwYPAMXRYYHCJock5ZmmNihdYGPXzQ2nhO/fIljXzKkmbyTtnqsF/ZzRryM/FKJ19eLs5JkzhN/fi1slE/kMU6Hy8efUuaiT980smnXbd8kS57bUidyMl9gX5lR8rp+PsiQAydbZy5jDFijoudmDau6fcu5tRL/GYMY8+cS3rWkb+aS7ugg2bKTn9ZgyZlKTtzC2NoMm+knDnmzGUunOv5PH3FB3idp1/5lTIY66t88DC2sR9ZjE257OEsAOU92oMPchO75MWm1Rp60zZ5KBLBgoIQuYkr9DxDw4c45DnlU6AqFx2Jo8Ur9NKgg09bEXgPBDLvnNF3M2ufEcyhOUJvYtRQDsrk4zAx5yFc0cDvYWW8RTPnk0cbONB5qJnHH2i3mnJvJXN9kU7/fUY+Y/xljbaiYX7aCQ922ObzimfllzaKt/JmL13aPmlWNqz8Eb/J3+ciQAydbcRmnuE8u1zsrDF3K3bVS3zCQ+/HZ2mmnca561s9cjiHW23rbMzcdeQ8qgN95hfn9np9lgabZ35gLtvEg7U5N+ViU/7pfK6n/GeNV75t6cJebKSlrRTGFIMTI2KPNYpPikfij94GT/rvPDTGCPZZXLrevgg8C4F5Zo/quZm1zwheFSoYYrGErPyY2DmUU488JkAO1ExeyM4Eu6UfGchXX/II1Er+ljx5Vna7ln46NtFMe5LHRLWle9qJbHmQM5+Zm7LmMzTapI3apEx9sF/RybOyAXrmk0/83Bf52xcBYuVsI7bMEVy+eS6QRdx7fvJCTz2pF/4pY84lPXI8RymTMXzQ5kdbJ23SzzXtd95ztXeGLEyw7UybvqI7zy+ypv/zeUUz5foWT9vmuvPP7Fe+rfQRV2BNEYidForaPHvW+bM4PtrYj6TjPoIu5UmLXdCD61bMStu+CDwKgdU5PiL7ZtY+I3hVqJjwOCw2k65JkLWphzXmTIIzkSori8OVfuimvuRRzkr+ljx59uyG1yYGJuNpj3T4K05buqedyYOc+czclDWfoZk2Muce7PkC3WwrG1byV/hNWX3+nggQQ2cbMcb5oPE2yPzCMzFsHFMMzEteXamXIiBlQDOfk551z7by6NELXfLOc5z0jLfOxuTzXKXslEURAg90Zxs2mI/gRQ6+OL+yceIB35yTP+3Jt2+r9aR9xvgsRiu8M/60casIlH/y8KYy94o4xjYKzrYi8F4IzDN7VO/NrH1GMMmGYi3bKsE656FaJSbW0A0tbSWbeWhYo63krOafWVCSDLBJ39DvnIli+v9m/CgGt3zBdhKMDV3Q2uYz8xM76Oc+Tbzh0+49X9Sb/cqGlc/TrpTR8fdGgBg624hXCwPzBhc6ceazMplbXdJn9U5641w99NiEvmzM5TnONcZ75z9lrc6oslijQMm3Y64d6bEhcwv2TlnzT7UTD/TMuSl32nJrfdI/4hnfwOtsYy/koyevaj/F4NYXF/WkXorqGRPgDX5ZcMvbvgg8C4F5Zo/quZm1zwjmcM1ChUOGDBO6hQtzFiocwKlHOvmUA60NXfCZYOXxGbotvqSBjoM8D/P0B33p357daSc28sEWmpeO/r9NjoJy5Qv2ISft5HnqymdkTz+0e08/fNqQ8qYvezSTL+1GPs9zTizaf28EiLMzjTgk3rjEvXw5Z8zNOFeudD7Te57gO/KZdnq2UybnL+mQy3PG/hbNis88gg7zW/pIEUKxjEzexvK50vRf3q23ba7Tp73Oz7kpVzp77IbmPRt7kbge1Z188OeeHpHBvhEz7BfFJ34nzmDBnUPfVgTeC4F5Zo/qvZm1zwg2+KdyDgly/Jh0TYKuJx9r0ENrk085HuB52Fy3TxnIWh1QEsFMBtOfIwUl8qedPpuwfNZ//cPeTKTQ6wM9fNiUdk6e+Yzs6YcYKFs7Vhhoq7Q+64v7lHZD697IlzZv+et8+yJA3BxtxB5vyryIKRSJeeaJw1sf4x99Z/Su6D0f03ZyR56FeY55Tt3YzpnBdvnoec7muj74Rgs7bOABPsikuFzhAT3ryccznzMtfZCPOWXR41fKZd/cO3iwdVXsK+8ZvViflZ184Mrzqrk/qzV8hc+4JVZoxjDYgAk0e3JWsjtXBK4gsDrHR+TczNpXBR9RXprXQmDrMtyzUp6ziW5ehHs6uvb9EDiTd4jBVfwxz5sfLmPkrT7zT7hbBcHWDmRhBI3nYYt+a371JXeLNudX54i52ShKKCbxj08WuOIy/wmAReCUNZ8phMTZYihp5l5OudgGbvCyV7ypywIzZT1rDCYr3KY+7NJ+eveNMQUgz7nOmLfmYICP2dAHz5znGTzTHvQax8hsKwLPRGCe2aO6WlAeReqb0K0S357rJtA9mtUaifTs5b2S07mvicDVhPbRaFAMnLX9Co9+UnSgb1VQS3O1923mEX4LnlmgwzsLIGhWBSM+UDS999tJbKToO4rhyvYjGEkDP3s+sWIezFnballkbtF0vgjci8DZHKa+FpQi0f4NAZL/0UKP5EZBeaURsE2OV5D7HjxXE9pHo2NxiP1HzxF0e0XElk/o8HO0GNqS1fkiUASKgAhczb8tKEWwfREoAi+DwNWE9jIO1JAiUASKwCdF4Gr+bUH5STe8ZheBr4zA1YT2lTGpb0WgCBSB90Dgav5tQfkeu1MdRaAInELgakI7paTERaAIFIEi8B8IXM2/hwpKhPdTDBoDjYHGQGOgMdAYaAx8/Rj4jyrzwMShgvKAnJIUgSJQBB6GABdWWxEoAkWgCLw/Alfz782sfVXw+0NQjUWgCHwVBJp3vspO1o8iUAQ+GwJX828Lys+207W3CHwDBK4mtG8ATV0sAkWgCDwVgav5twXlU7elwotAEbiCwNWEdkVXeYpAESgCReAHAlfzbwvKHxh2VASKwIsgcDWhvYj5SzP4ZRR+IWr+QsqSuJNFIBC4J274AYn5a0UhenPIL/fwf7q/ild+WejK/xk/yrDlij2bht6xsPrpyzvE3cX6Srhczb8tKO8KgTIXgSLwDATOJjR+KebIT/ZxuXKJzN+t1gcuUBP7kX7rwlXe7LmE4Znt7C/drH7+T9+m7D5/PgRyf9lXft/8bIyk18QcP+t4pqGXn8JMW+THnrPy5KXnF9aQnw09K11JM8creuw6atsVXKYNj3oGk628dFUHuW7ifETW2fyrzBaUItG+CBSBl0HgSkIjefLmxMYzRSaXC/MWiCRYPqvL6Kxe6FdyuKjUN3sujZzDNuTkGx/sTpo55kJPenzGp1WxKh7tXxMB4nPuL4Uc8Uuj51ka4se1lUereCRWtr5wreiRi77V20nkHImzee60nx7780wyh4+zgF1hoxz4OQfTRtdX2Mw5/LhScE059z7rP77Mc72SnbiAw9Z+kFfyi8jWXk8dZ/Og/J++oKSq3ztcOvpVegJnK3he1UcO7NUAfS+ftBE7r/4++bNtZd+xj8+RpPMse0hQ2kFv27IPPM/am3KVf6snGXPB2LDn7GVxVu8W/da8tt3qSfwmf/HOi2HFj68zN2CHn1v8K5mdexwC3FPuBQWEzX3hjMw3VOwpRVY2nrfimjOAHouqW/2qOLUQJJbkT53In1+KWJ9nXN60/exYbOBD/pHcfEbvVo7w7J219wo9PmZhTIE4i+QpN320MMdm+Fxjn8DLZ3r0bMVO6riav37cBiktxlcFh4inDgEM4L5L4wDMS+PVfcfeV98jDhmxngns1XB9NRxJ8Kv8wFxeLiSyIxdB4r2Sm+tb49w/8DqSPFPWWb1b9M6T5DOhr8ZcxnsXGBf81vnBR9Zp+MpzNuzIvci1jj8GAS/5qZ09nnvFfmZMEz97xQaF3pmYN34y/ozRtI84Qi+2zBiDjrn5BjTl3Hrjjt3GcerNMTQTH9ezUEq9riPb+eytH3KOMf6g7z3aLMbZC/Tv7bP2Yh+08BA/4Gy88LwnY88389cezWqtBeUKlReeI3j4fJZGcBOcR5Mch+Bs8bGHBQfvyOHAPug8jHsyWZP+qF+35B1ZZ9/B52h7dqyQ3FfYMpeJ/2wM4N9K7lG/pRMvk6893+i3irjUyyXkt395wT8vmqRX77Q/L+ukIdljIzr24g5b0akNeQHBbwzS85xt7kWurcbQo+c9m3G0h8F72fMe53qroKQoylgh/oi3jEH21zhAThZx0CPjKI7wGjuJr/JzzjjHnpV8YnLKSjnpV8pljH97xSI08GNDYoH/FkzaB23qVddqjrU8P9Juycj1R43Bkw8NXMWWnr1kT1dNf6CTHywcM8+eSEePrxkvK7nOJZ7OHelbUB5B6YVoCAo+n6URyGeCkwPRgnK9u+y7CWNN8fPss2PFQuBnrf+/GMyCknX29IztR2OGi8akyWVDEvXywv95yWELSTqLwrQ/9So31+dc0ifdap4kj43YhA0To+R3DO0878hGFi193KI9okd9yMbH92zGkT69p+6pCwzBgP5ZjbMwMaYYmDHJ3Iy3jAXGxrq2Elfy3Oo5K3lelCGfz/RiAi6rfXI9eVZyWMdGPsiCZiUv5TCesuBN29Fvm7Qrfmnz/Di3R580R8Z755x8iK02fMovFew/sbKyUR85Oyv8iKWMFXSs5Kh79onnXNt7/rELG1RnBAMQRuMsfMnrs32CAD3AAajr9Dxnm+uAubqomEs5uWnIY5057JVO8NN26PaadpsQkaVf04b0RXpo1U/PfLa5jj7s1FZo5VOfl7Y6lJ888K0wWPmrXOXYa+fckylj2iufcujxi5ZzjsXtqD/og5d+ZfvEWHv0w/1zPmNE33JOO8Udvrk+sWedjzqVoa/qnj1yUg/rM0bwb84pX99W66nrqH3uSfIyRt/EGZniN+lXz8g42vQL/BJrxqtv5NixhXXqJS6NTW2Zc0kvDf3WPJcEl8bEZxYGysIHLiUbdnOR2ljXl+k/NNgxdeED836gcy+do8/9Qk+upUz0smbPONfTVmUgjzblsp6Yz/UZ/6xDP+03JtQ9e+Roi37mnGupb66nnZ4p+rSZ8WzoS17Wka0vfOmQD7qkdR6eHKtjy29ojRNpt/qpEzrwIHZp2Df1sD7lr+SoE3/F3Tn61TlgDtqUj2zssKHfttK7moN+C5dJn8W9a7d67MMuzrvYoRN/WEt/mOd57im0FIfIYU056ibundN/ch45wziTdmIo/apPPFfrW3M/dmGD4oxgD9wEBRkZgDOYcBiaDDBlaRb80EBrg545aG08p375kkY+ZUkzeadsddiv7GZtbpx08mXyc06axGnqx6+VjcxlAmecGKADGv3VxjnHc+KEjJTDWu6RfqTN0CcN45Sp7pyDRxlTB/RX/YFXXBnvNQ4z/msHtJMXO8RQ+pkU8AU52cAgMcFHaHJOXak/ZTBGduLGHHK0ieeUCT2fbCu7tUc6n1PWyj73Xz57bGItm/w5tzeeGO7RuoZv6S/2k5CxRXvo55sg+elTLzYntqzPuaSfcrYuIQpCMFYW/WpvuRi4ePhov8/qgs8YnP7rj7w8M8Zm4wyejCnWps/ouCUDvpSrffbomPGkzGmTPNAnD/PoyD1mPOeMX+XMHv/gsaFfn8GDNTGVBj2pF/ygk89n5vQLXp4TX+bwST6eLZicQzf7TGMOvfR85HX8RrT4z8r+Obdge5uaOnnGDxtxnV9qmGd9yoePD8WNY3v8S1+cn8UXsqHlLICDxRP688ti2qcs7aVfzTGPzGn3Fr1nJuWeHRMb4MGez4YdGWO5jq/Jk/6Qz1hnTn9WslxLuVvjxHOLZjX/I0pWqyPBbpD8e/rWQZbQBOIzQEwHACSDdEUDP0Hpgd2imfPJow2APTcTudBuNeXeCjR9kU7/fUY+Y/w1Ga1ooJt2wqP/W3bKl3QrDKa/aQ8yph/IAINs0tDTkDFpVrqVMW1wfvbgMP2Z+wePezT557N2557s8Uqvn8hbza3mt3xcYZV2Tp9Z2+OZsQL9SsaMvaP2GaNpozYZx65Jm/i6turx62wD/4yBPLtcRKwxt2dD6mX/4aH347O2Jb1z9M6vdCEj44aLwgvSS4Pe+IaWi5ZGnzJT1vRfO3Ivbu0DduPrXkM/dPpAz3PqmfxbMQXdyqbV3IoW//lk074te/DP/Uk+xvqibzmXuDOfPm3pXOmaeZMCA1vFHd2O6R2jM33NMWvZiBOLUuahTZ+Ym/7IP3UyP/HCh62CbspZ6cGWaT96sdmiETmM9Z+e4om5PNvTvpX9zKHPNXvksI8+20urL+/RrzDZ0qudrLMP4ALOFvorWasY2JI/93uLbs7fzNpnBOcBS0UeNmTlx0ADnKlHHpMCYPCZzYBgfkv/TE7Jo7yV/C158qzsdi39dMwm06Y9yYNM2pbuaSey5VEOvbapmz7xW2Egj3KmrmlTyp5jfHUPp336D4/7q86pw3ltSz23/EkclLPVYy+yjUnp1Je6WJPePWVOv6YMcdDXLR9Xe6Id9NgAb7bEJW2RftqNDn2a/Vn79DftYYxcZbkm7bTR9dkj42xDtv76jT1lgB3rfCzccp1x6gXbGbtzLumVhWztcC571hIHbJ32oCfnuDDAcMpNWem/+lZ7YQzQzwb99BkaeVj34x6jl7n0acr1DEA3Y9jYyHODDdDONnXh/8QEHnhXfiiPdT6Td8qHXvvkyV4M9U9M1CNv+gaPtjHP/qPXuRwz5zwy094cq88eG1MntOCuPOJp9TYQfmmURY+8bMajc3OdeYpDfFk15qf9EzviP32Hh+JbP1Ju6l/Zv5qDHxtWNm7Rp85Hj1eYbOmY9um/mCLLOJOW55WvKx3KW63tzf0cJQvKM4LZaA+YonAAGThlm4eMtalnHlCAEizl0KPPBLXSD83UlzzKWsnfkifPnt3aBK0YuJnTHuUlTlu6p53Joxx4mZ8JJfFbYTD9gR45+VEH/Up3rt+iUV/auvL7qj/oV8e0az67R4mZNMZi+iu9ewrt1r7Kzzpt5SPzqz15Y/jjP+wHvKsmRthom7HC/C0d0By1T3/VZ48N+uqctCt8pck+/cj5vTF7YYxzmaUufBI7LqWtyzT18iYkZaB7Pie9tmGHupzLHhszbnJta8zlyt5NvpSV/itntRe5xnrayjNnJhtz4so8GKRc9PI8bUsZjqVN/lVsbJ1b+dWFXWmbepA//XDNXj+SdsqHdmWfMuyVdSTu2cdpG3qdY6xPzDGm5yOvY/VnT9ziUzZkiFnOr8bqyrUpD1n5hWeuw4vOeV6UmT46d6THN85u6oYv9a/s37JjC5cp/4ht99KcwQQffQONb76ZxB/aStaWryu7E8/V+tbcz1G3oDojmMREwGfzMK7m3GTAmXpYY84DupKNTGhMiCs50Mx5bJRHuwDbzXBuS6frUy7zbCQ26VvOsUYTk6RhHj5k0laymcf2tDN53hg33mRN/1YYpE7xnzaqQ1smjrl+lCZ9wIYZQ9g+9RzxB/1iPe2az6t9mzQZD+LjnkKrjJxbzaec1JE45LzjFQ6u0WtTnhl4sk3ccs3xUfu2sMUPbVBmxpZzez0yzjZwxz969XMx4I/PymSOtyyzndW7ovdPmFO2z9ro85Gey8MLJOlTlv7n+movcn3uC2ePOZsxlTHtnJiyhp6kkX+rzziUH7k2ZCMz51ib8ylH3mmf81t9xru86Yv25dyUJZ+YuD7xZX5izByy8QV67GFMo0+9zrv2RjT+41u8tGXKGSw/PWJDxgCLqzhPptW6RU7SOdZfn4/2/tOQSZ/6V/ZPep/P4CLPs/ozmOAj+YCeeDJGjI+VrDO+Jp5n/L2Ztc8IzoOpETiGDIPbg8ccYxqgTD3SyaccaG0ACR96afL4zNwWX9JAB9huxpuwxZsa9PGx7dmddmIjH2yh4RPP+q885uRb+YJ90KSdyaMcfGPepp3Jhx8TA+nkQ8b8rPx3j+DD7qRBZ+qd6+6PMrQhsbnqD/aItdjr25SpHakXu5MPv/QFuhX20KT/6INOPp7VnXTOqX8lHxnQ2bAt5U5flSk9vTTGmWvYaJNvz76UJZ89stxP55CZ8pzf6tOeLZqcBy98IsnyJ0QaNjAnpknPWLqcRy88Rz8rO/F17w0He5ZxlfpXY/xA5qohR10zHqCfe4Gc3BtsyX1hnDGljNQPTcpFL8/pEzpyDp7cB9aUKX/apd60xTMhHzSsIyvpnGOdNuWznramz+pg/7Ppc84ZI8zJhy364VzaCy2ypnzscY6xXx6gzTb9zDXH8KAbORSXtOmztKs+/XIdv7aafuY6bxL1J+cdY1v64vxeD45iO+nyLK/sn/Q+n8FFnmf1ZzDZ8lFMU5Z7QVwwPtL29nuPfztK/uA6I5gNnwcAMTiPHD8mGwIx1/9Q+dYZpBlA8ilH0OaBdd0+ZSAcGycPG+FmaMf0B770T7+kt592+oy9NJ/1Xz7sRaYNen2ghw+b0s7JIy92ygv95FthMP2BBp3ZJk76oi76bFMma87Jkz6znraLUc4d9Uc7oFeXewAeaatYqw9eY1BebMiWfqQPqQ9edGXjWWyVTb/SPeWuZKWMuV+5pg36mmup+4h9yHLvlWuP3GkH/k7bpV/1yDjawIg3FxZWXC7oYh5fb33S9zN6sW/S+0Z0z3biA5uONHA8ihsykZ1ttRfM5SfpkeGasnJOefbwuk5vMzack2bKlh4fXcvYyXPPep4HeLGRD/Py02dTt3Kfca6ViY60ebV3rE8/iNk5h6w5557oe/rJePLwDA863YvJM5/RKaaM+UxM88xg+3wbSUGcNFMHtqQvc30+gyO+HGnafIQWGyy6j9A/k+YMJtNHsPbLNEUjsqCx8eyXFOf2+rnfe7S59vPJy5U/xlcFL0R16hMhsEoimM88yeloM9ES0K/U8CGTPfYR63tJ8FH2o/cWhiTPaQ/JL21+lD1TzhH74NHGyY/dmfyvxMCZvIOu1b4xz5+1ueyQt/rMb+xnLjn8zqTNM5eThW3iwhwJHfnYsbJ30iM737zkumMLEeTOmIYGXbkX8j27PxpD99qB37f2bCuX3as7+Y3xI1izTzNuZjwQLyu/mHPPf4nfrccWeFb/jIPcxjyxAI+Y2bNXmZ+xbdoHbzbOjWcLmUmPHVtFGrbDt4rVlO8YXDg385y6bo8+zxf2HNkHeMEgbVfeR/TsAfYcablH4A2eYsQzOPNB5vxIt6dn7vceba79HCW58sf4quCFqE59IgQ4kOx9JhrMZ+5sUcMhOcvz5gonBQAAIABJREFUTKj0LXXgJ77NxJ40jxofuWxXl8574XjEPrBY4cg8OGZCJ/nhz5mGjM/Y0u+V/Vx8ty4wLgTk0B9txC/xMXnmXhyVdw+dxdXMHffI3OLFZz577T0w0Odb+4+dq7M97d/6YiKm9FPXVhGXsuGzILUomTmP9Vl0qDdlMaaII19k3MGfz5OHNfZs6p102ICsMw2fsOlow/Yt347KeBQddhzZQ/RBl9is8AZf6PARvIk7+hXt9OFq/r2Zta8Kngb2+fMhwOFk//Nz6zJceclBeaU44lDNZKyN2Hm2+Fn5vDd3q2DDlpUN2O1eTPv39J1du2Wfl6e2KH/LPnw5a+8rxYv+fcbePaK/dYE/yj9yBDH0Ho2Y47PViLu99S2+s/Oeib04BxP340oePWtT6YvAVQSu5t8WlFcRL18RKAJPQ+BqQnuaQRVcBIpAEfgmCFzNvy0ov0mA1M0i8JkQuJrQPpOPtbUIFIEi8IoIXM2/LShfcTdrUxH45ghcTWjfHLa6XwSKQBG4G4Gr+bcF5d3QV0ARKAKPRuBqQnu0HZVXBIpAEfhuCFzNvy0ov1uk1N8i8AkQuJrQPoFrNbEIFIEi8NIIXM2/LShfeltrXBH4nghcTWjfE616XQSKQBF4HAJX828LysftQSUVgSLwIASuJrQHqa+YIlAEisC3ReBq/m1B+W1Dpo4XgddF4GpCe12PalkRKAJF4HMgcDX/tqD8HPtbK4vAt0LgSkLj/xCen3U78ksQt8DkVzpW/yfVzJ35P+2GNn/RQr3Mr+S73r4IFIEi8FEIXMm/2NqC8qN2rHqLQBHYROBKQqOgnL+Kwi+S8FNs9H745Z7503LTEGTxG+CzrQrBWcDyc2fKxx4LSuQ55veGj/7M2rShz0WgCBSBZyJwJf9iTwvKZ+5KZReBInAJgSsJbaugzJ+5s1CcRSBGUuBZdFI4UnjyTEFKMQgPhaA0rjFnAYkc6fg5PgpKdPJBJg3a1U9rvi32P0WgCBSBD0bgSv7F5BaUH7xxVV8EisB/InAloVG0+YbSgtHiTw1J45w9PBR98GRByZ/RKQJ5u8jYNmU7Tw9dFpTQ2ixcfabX3pzruAgUgSLwEQhcyb/Y2YLyI3arOotAEdhF4ExCs0DLIpC3hvwbxVn07RWUGKTepPPP1shHF4UiLf+ErTMUneqk500kfL7lhJ9ik7mkQxZzbUWgCBSBj0bAPHjWjhaUZxErfREoAk9H4EpCo5jzDaUGWrT5nIWic9mrN+mQiRz/rE1xSFG5+rM1bxp92wgP8igibaxR7ErD/PyTubTti0ARKAIfgYB58KzuFpRnESt9ESgCT0fgSkKj0HtEQUkhyNtC/w0lPQWmjXXeKO79r7Shh8ZiFBkUvL41TXlXfNWW9kWgCBSBRyNwNSe1oHz0TlReESgCdyNwJaFRwPmnY4s9ij8+tnzz6Fz20Po/mrFohCffKFJs+if15HUMP3/WhoeCEn4+8PFhXvsYI6utCBSBIvAqCFzJv9jegvJVdrB2FIEi8G8EziY0/gQNDwUcRRrFoP+28kxBCS9FH7zIovDzT9sUiqzxphE61vn4jPGM80/c/o9zXPPfX/I2lXarwH0j6n+KQBEoAu+IwNn8q2ktKEWifREoAi+DwNmERtFIsUeBR6P4O1tQWjBSLGahh1wKS98qChLFIXrRaaGIDBtj3j665jw9hSYNfovLXO+4CBSBIvBRCJzNv9rZglIk2heBIvAyCJxNaBR1WQTqCMVavjFc0UBL8ccabxgtTikkGa8+yMXGWWRmEYtNvCm1aOSZYpUGPzpZR2dbESgCReBVEDibf7W7BaVItC8CReBlEDiT0CjqKMpWxSJFXL41XNGk0xR8Fn05P+1Z0UDv20jW+VO5dBSQFJY27MW2/vtJEWlfBIrAqyAw891Ru1pQHkWqdEWgCLwbAmcSmoXaLBYt6tLoSSNv0jDmTWO+2cQeaP3s/Y9y4JeOMUVmFpfqQgaFZlsRKAJF4JUQOJN/0+4WlIlGx0WgCLwEAkcTGsWabwEpFv0f0OAEBeH8k/TRgjILQmQdtUfwsIm3kPzZHJvyf5wDDXYxz5+8tV/e9kWgCBSBj0TgbL7T1haUItG+CBSBl0HgSkKjWJSPIo0/Kc/Gn78tOqVZFXRHC0r/xD318IwubKB4RJ7/Ax2e/b8VsuDE9rYiUASKwCsgYB49a0sLyrOIlb4IFIGnI3AloWVBSaG2Vez5ZtDegnL+D2ooBi0sscdx9hSJ6MqGXv/NpLJZp8CkkMw/pTMPP/ItMlNWx0WgCBSB90bgSv7FxhaU771T1VcEisBNBK4kNApKijL6LORuKvuD4ArPlM2fufnMxltJCsktHdjcVgSKQBF4BQSu5F/sbkH5CrtXG4pAEfgJgasJ7SchfSgCRaAIFIHTCFzNvy0oT0NdhiJQBJ6NwNWE9my7Kr8IFIEi8NURuJp/W1B+9ciof0XgEyJwNaF9QldrchEoAkXgpRC4mn9bUL7UNtaYIlAEQOBqQit6RaAIFIEicB8CV/NvC8r7cC93ESgCT0DgakJ7gikVWQSKQBH4Vghczb+HCkqE91MMGgONgcZAY6Ax0BhoDHz9GLhSQR8qKK8ILk8RKAJF4CoCXFhtRaAIFIEi8P4IXM2/N7P2VcHvD0E1FoEi8FUQaN75KjtZP4pAEfhsCFzNvy0oP9tO194i8A0QuJrQvgE0dbEIFIEi8FQErubfFpRP3ZYKLwJF4AoCVxPaFV3lKQJFoAgUgR8IXM2/LSh/YNhRESgCL4LA1YT2Iua/mcFPMM7fFOcnGLd+fnHLdmSsfs4Ren43HJmfpeHLFQzu9c+9WGHvz3Xeq+MqP/q39veqzCN8/lTpCpMj/EnD79Sv4pA59vxo24p14+aonNLdh8DV/NuC8j7cy10EisATEDib0CisjlzKXKJcTlziq/bnP//597///e+HP9Bzma7a3/72t//Qg52//fbbqaISHVu+IeuXX355KyxXNnzkHDhObPDlTIHxKPuxZaUX+4i1aeej9N6SQzygn995f2QDZ2TvNc4CdNnAibjNM/Drr7/exAdZxOJsq0JwFrD4Lv4Z68gz7onxR2M0be3zDwTO5l85W1CKRPsiUAReBoErCY3Li8vQxjMXEhdRXpJcfnzmxQbfWb3Qr+Qgi4sYPbNxUXJhH21csis5+IesLf1H5T+LDrvAIN9c4ctHFAZgtcLJuHgWBrfkggc2gJFF1R6P9hI/fClaxRGxAu7ZVr5Dh/5sFpLOQbMVY+yj9OCLTp6xUR4KQWlcYy59xTa/FBnr6EUmDdrpj/a1fw4CZ/OgVnz6gpJAM/B0qv01BAgiDj2NA80z/Vbz27U8W3RH5tnD3Me0ZfKr99Y38MnX58+DwJWExsXDxWTzcvL5SH9W7xY9tnCprhrnxTcvru/F8soPz8uqUFCmPTZ6jilceN7T59nPQlBZ2bN+66KH5t49Qadn/pZNaR9jcAJvMKTng83ixjiLNNez4JkyH/VMDKQtFIjataUjY4H4Mo7o9Q+a9Bf/2IMpm32GjuaaMtSfNM7ZwyO+9PgCP36AHzblXwKmbOXQQ8ce6x+0NgtXn+m1N+c6fhwCW3ntloYWlLcQ+kbrBJEH2UuFfquZ5OXZors1r5zUlbas+Ek8JLG2r4nA1YRGLNm8nHw+0p/Vu0VPbFL8cPF5kW71XKZc+FtFzPTDS/yIP+jkordhEzYnTq7Ze/aPFG/IukWXbySh3/Jzr0gwR9zSpQ/2Ezt8s4hD1ip3YeOeLcq+p8cf7EgsGGPvnm79gUZa4ge/5HN+yz4LtCwCiT/xSEyQi7ytBla0pIOeYhL56DLWsgBWXhbCxip8vuWEH/+MeWj4IIu5tucg4L6eld6C8ixiD6bnELN5HroHiz8lDjtMJiQInunPNJLJXgJayTKR5FrakvOOxc3n9l8LAfb/3kYczouIWPOy8gJOPamXy2y+vUIeF5wt6Z1DLhe0dPeebfzgHCLX4kFdt3rfGknnuTlrE3JWFzhz87xTGIHz6uO5Xq1NW7WZHnvhxf4zTezksfARS+ftmV/tqeuP6NFBQaQv4MUcjQKL2NnKu/oDr/zEqWN6YiTxRddqv9E1904+/RQvn2cvVkmHTORYLHOG0M/+zobf+g4P8vDHxhp4SMM8z8qWrv1jEXBfz0q9mbWvCj5ryFX6rUR3Vd5785EAwHh14N/bFuzgUNNIEDxvJbYt20gmM0lt0Tq/2sO0Rbrsr14wKaPj10WA/T/SuGi8BGehSByu4te3Hiv5qVe5STfnkl46aGZxtHW+ob11OeoHdufFqj77LEyYW53hq/lmdUbRsSVvZSf2IGer7RVSV8+72KkTG5gDS2ROO8VM+qs98sFmNvShn2LORgwwZ4MPLCjWZ9zoDzyzIXvGHTSrGGWe85J6mUNuyhavqctnZEOPreqmh8/GehbQzmcPPTTYAz0ywAgseE55W/6kvI7vQ+Aqxjez9hnBflslAOBLXp/t86AYQASN6/QZRMAz1wk2Ag+92ZhLOcjPxjpz8EnnwUrbobvVkl5Z9JlMcp6xvqNzrmkra9injdoC7+RJG6GHF/1Jp05p57rYqt9n+sQT+dnQAc/KLtbUqx/M6Qty5Eu8mFeuusRKecwjZ9ojffvPjQD7f7QZE8QqcWJjnBe388QNtKuWeolrz4O0cy7pobFgmHTEt3Yqi34Vw9gsP700ObcaU4Sk/9BM+zz3njvW+UBrcw1a84B09ita57Z6dOydV2TPAk9ZaZNz4ALPXgOP3GtjxCLet8jK0F+foVthvTdHoYZd7Id6kMfYt3XKp1dWzkFLgYUcMBMX/YHHOfkoYi0SlUm/hRHy+SDf/CufMsXL59lDj63sBbKMmbQN+WChjikDfvYBHv1DL3z6Li80yGp7LgJbMXNL6/5p3Pl2sxLM5mNIJjXomMtkCh0BaDPoc05Z0phQoLWZUKC1Tf3yJY18ypJm8vKcfOqwJ8jTN5MRPU25Hgbm9JU12pTxNvn7728YTv3Kk4YerBNvccs5xomtdqZd6OIjJtIwN/2RBv3Js7KHOX1mTEOvMtSjjj9IfpKL/egRM2mYTz+db//5EWC/zzZiKOOBmOcCIt6MdfpZRKSe1EuMGqfSzLmkh4Z1LshJR+yucgn8efkig+ecw6c8HxQORxr68tzDg//o5ON58gyKkXnGZ/iQs7KfNWRNnFb2UXBYLKc/0iJnq02bsGePXjlgh93uB+OMEYsw6cXCZ3pxyrkzY/Zy640lcrRtJTP3gHVjAZmMwdMikrmVrBVO4okM+NgbbJz84JF4TRvhBVN4ocNeY45zwBo2aq8280xjDV4bZ1O8WXOMj7Rb9iin/X0IrGLmiMTtE/wH9xnBBM8ReoIu6QjifEa1B5uetqJhPhPdFs2cT5434YvCjHn88XBIlz3r87BBjz755zrz+CqNWHhwlA/fnm7pkJN0K5unjhXNtGvir77Jm75Ag93T54m/suinba4pF30zNqSZtjjf/vMjsLXne57NyybPBZebZ2qetZSZeolbeOj9+CxP0nNJcgnSpJeOHntSN/buFbfyotM8yBwXMP7cavDxybZ13pIWG/ELWhu2c95WbW9Neuz1zRI4+WbMwoL1xFI++7QJW3NvpVn10CZ2M0aUqx1zfSXz0XOrWNnSkf5QZMFLzFlwrWStcIWO/UQeDfzPFpTwIAPsEjfmiJ2MH3SANXrRyVi9b4M/bCBGXHOe3nMCv77mesePRWAVM0c0PLygXB10Dy1G5sfAIUimA/IYlAShwZ+OZTIjkFf6kYF89SWPslbyt+TJM+VyqNBDT0Nm+ptjfKZNGW+TG4UZa+pIWYxtK5vl0a6V//AjR7smj/LnXiUPNCsclQ3t3EPluTfqgdbPXJMGX6Fp+3oIXNlXYtb44pI1lkWHeDE+LSBcs0+98E8Zcy7plUE/6ZhDf16GXOD5dib5c4zNnl3msZ25LR/k5ZyLh3Nb+Sbzxsy98G7lDNemHvXZUxAklthOUcmHhn/o2GraBN5bmK94J3YZI9JnEbNal+5Z/SpWtnSlP9pKL7b00CiTfoWXcuizEZ8Zk+pIGsYUk6x5zogfPqk3x8jFDuIvWxax2EI8wAc9z8Y4z+hk3S9tKafjxyKwipkjGm7exmcEZ1JSOUGHDILENpMaa1OPCcQAJLhm8CMvE91KPzRTX/Jo00r+ljx5lIvtfrQXmpVMee2VMYumFa+0qWNit7LZPaCnrfxnPvdp8mjv1Jc80Kzsltc9TR59mv5Lg62MV23l64quc58Pga093/OEmCX+aFxAGVPECh8alxhFBBfUbKmX9ZQB7XxO+pTFOeGTjWftYz7/vJd0cwyPZ9c1LlUu12mP6/Srs7h13vIsIRO/Ms9s5Qz07K2xju3gbXGgjeArfviT2EhjnzbBg84jbWKXMSJ/Fiirdeme1a9iZUsX/mgv+0OcY7OxtpIlxsqEDxkrX5Gf52JFoxx69nTuK/NT54oGOuOXdfZUOvzSJ+iMD+Ko7fkIzP07qnF9Uwf3GcGZlBRhAvOZ3jmDicCZejKBwLOSzTx8XhQrOdDM+VUC5CDxybalUxroM+idt7/FDx0HFh/EQt6VPeiaiXT6ttKpDnraSrZ468/k0a4pH9vlgYb1iaO89iljS0/KZbySufJDHe0/NwLs+dlGLBET9OQYGhcU8eazMpnzz2jO0Z/Vu0XPmchzgWwvRfWtYtq17PUp57j08YkLNt8oJU2eM+dn7nU+z5K5IDFjHXmrBgbTV+ksFCyCnLd3Hv49PNImx1v2KJt+YmeMJE2Ob60n7aPGq1jZko0/7AuxyxgssFn8V7JmjEo7fXWvUvekkTdpGBODGYfGhPYQpxlPk1865vEpi0tpkUGh2fZ8BGbMHNV4M2ufEbxKYAQkMgwmkwFzjGkE09QjnXzKyYAm6OAzscjjM7K3+JIGOg4nn2zTH/RlQcc6+ucHnTR1T13I0Hdp9FP9K3ugQdeUz5xt2px2yKec1KkP4qtdK33SIJv1fBYT7aHHF3XzjP9i7Z6lLVOutqxwnHOpt+PPi0DG9BEviCPikAvHIoWYYs6zNuVIl/PGM3xHPlt2ypuyKQJ9+0OfF3DSzbHnJ33UJ3zgouVM+bZKfmyY9nn2mVeGc55B5ln3GXnYkLlPHSta1+gpfFJOruWYc4y9W23q0eY9HmSJnXLJJeYe57JH7t560j5qvIqVLdnTH+jwSRxSFrHBM/FhA0cKR/lyT4nHuVcTL/Uozz71MjfjTrqtHpuwlzjApvn2HruY56289m/J6vz9CJzdPzX+qEScGf0ZwQbDEPEW1MjxYzIguGkE49QzEwh08inHYJ9Fhev285AQmJOHgzoTyfQHPj427J482qhv+qEt9NidDT2ua+vKHniSFh71KW/azDz6pl4xVy924hvzycNYGnrX34gWBeWk53likBiyzjN2Z5u69FN8lOlz8nb8+RFg/482YjIvGi8m5on9Wx9iyXZGLzxb9OieZ0Ud9FzeqZcCc+ui5HzgHzkheZQHn3mBi9iidXXuOS/I8/xgP588R66t5qDN8wsNcyu7sCllpL2O6bEfmSta6VY2gS+68XOrgRl2uB+MZ85O2ynK3/stmLZt+ZDz2J7+MvaLBH4QV8S/bVUkumZ88MweTFyYJ5bcb2noZ5s+sC+rlljPdXRhA3GAPAph6HkmrtHL/mFPYjDl9Pl+BLb275bk9a4H11XBIeJLDgl0sJlJ0PkG/PFtJ3mYtI5ygXtj8yhan4/uzN4SC6uLyouIYgx5q4/FlwitLlXXVj2xu2pesL4l8tkePY7puTyzKE6ZXKIUBrfa6qLnXCH/WW1VoKGLIicLm9SPne4NOGAj/q/sT74rY+RnLmY89xg7LdiJkaS/ovMsj3FwhC/9sdgTN4sv7F995hmBxnPGPs517WF/wMdefcSktmMXH5+R6zh79hld2dBLvECnbNbxj0Jyxj78yLfITFkdPwYB4+KstBaUZxELekCfh8NgD7IObyBAQgFLEtzRRvKa2B/lLd3rI3A1ob2KZ1yCFCpckHlJvrd9XNIUAs9q7BPFoQ1f8X2rOJHOnkKCs3yUXr6jPbYk/ujZ0mVBdFT2o+iw8WjuI+el/emb9lCIse8UXPhEEQfOs6ETGvqVnEk/n6/wTBmckdUXD2Jq7l3yHsUreTo+jsDV/NuC8jjG/0HJwQb4/Dwzef+HAV9ogkR5tEAU90ysXwiKurLzp+SCcx4B8tMzLmAu/ea78/tRjiLw6gi0oHz1Hap9RaAIHEbgakI7rKCERaAIFIEisETgav7tG8olnJ0sAkXgIxG4mtA+0ubqLgJFoAh8BQSu5t8WlF9h9+tDEfhiCFxNaF8MhrpTBIpAEXh3BK7m3xaU775VVVgEisAtBK4mtFtyu14EikARKAL7CFzNv4cKSoT3UwwaA42BxkBjoDHQGGgMfP0Y2C8516uHCso1a2eLQBEoAs9BgAurrQgUgSJQBN4fgav592bWvir4/SGoxiJQBL4KAs07X2Un60cRKAKfDYGr+bcF5Wfb6dpbBL4BAlcT2jeApi4WgSJQBJ6KwNX824LyqdtS4UWgCFxB4GpCu6KrPEWgCBSBIvADgav5twXlDww7KgJF4EUQuJrQMJ+fm5u/DMPz/Nm6o67yE3Pwrn4i7qiMr0YHHvmTi+/lH/v4iN9wxv4ZI/rgTxc+4qcFlfkRPTi9SszyM4qrn3/87Bh/xL6+h86r+bcF5XvsTnUUgSJwCoGrCQ0l8M6LlOKB+asXmD/3OZ04+/OfW/qf+XvW0+ZHPGMvRcIj2xEM2EfosvG71RQr9H74SUgKw622Zz86fvvtty3WN7/Vk72/S76nd1PogxeM17N7BH36tBpTjIPfKpYtxicf9HzmPL8z/hFfTB4M95cTdzX/tqD8cqFQh4rA50fgakLDc3hnoWdBeQsZLst56fnMGx/H9lyI8Ni2LlTpKVSSXr57/FXGe/YUB2B6pGWxJ4aTD1nzd8FXBQt06M4mts5BA84rfmn27F/pkM9+0sxn6T6qxz9wp1g7U+DOc3PF/pWMuUfI3dufK3rL8zgEruajT19QkoRWCfpx0F6T5DfER3z7IjnMZHvNqp+5kPkI+36Wuv3EPr3iXm1b3JWPQuBqQsPeFS8X/mp++rdXaEzaree8UI+esSO2ben7iPktnFZFQtJS6Pn2mN5CAxo+PlMMUaxPeVm4uSaPOCSNc7NPm+baEf5J43P6pF30+I1P79GwgbgTn0f8E4EzdqM3fWe8tb9nit0zNpT2PgSu5qMWlPfhvsn96gUlheTVoNl0+sYCSRedeeHeYOnyN0Xgnthc8Rp7t+DMQuPWn/8oEvYuRNa2vghyyXLR21Y2u/aR/RYG+MWXw1XhkH5hu5hSaDCmh4Y9sehxfstX7UAnutHrn0u1QV6LO5/t2Q9ptZ89JBfSu5Y6mMPW+UV46pjPFs3qRj4+PLuRW/Et45LxLXwfbdfM8WK70mMMrNY69zEIXM1HLSiftF+PLCifYSIJZibJZ+iZMr0M5nyfi0AicDWhcbETY7NxmVOAzItu0nEukEHbuugsiDg/0k45PPNGKguVLEzmBXvV35XeR85NO5WdODlHv6KXlsLNv4iwH47pwUZeenBb7RWFGvKyyefcLO6cz16bnEv8Jz/y59tFaMxlrBMLadcsHpG/8kf9j+iJS3ATVwpJYxjciP+9eD1rw5SFz+7F7MGGz5znGZs/4i466+93os/zcMbvFpRn0DpB+8oF5UfaRuJYXfgnoC3pN0DgakKbxYBQcXH5Vsy5VT8LDWi4lOHnouZi5uL0ol7JkIc4Tzpke9l7scp/1V/5n9VPO9Wzwom1Fb20rM0GPhZmubaFB4Ud8rJNnVsxkDza5Fzqm/xTPjyTZj6nr6xRND2iZSGe8sARn/LNKDYkVsQeRSU5eBa3e8Wg/mfPPoBZFoJTJvapM9+Ypt0dvyYCeR7OWPjQgpLgIoAJPAxKo3y2z+CDnqTCwXOdnudsc51ghS+DGnrmUg7ys5nA4JPOg5e2Q3erYYMy6NWVRRuypZm2Ij/tgE5b1M36tCXthAc7sqnPPvHW5pyDN+2cNuiP8uhnm37Ik/u4pXvK6vP3RmAVX0cQ4WJcXd7EJmfG87kli7jPeJWOC3vrTUoWjdKjhwI2Gz5JO2255e/MfdPGefamn5Ofc4iv8O21aae0Wzit6KVlTf+Vw35ZJMpLv4UHe+A+mPPkUya+onOvaROFjthIP/mnfOgmzXzGJ31lzCcbepV7tEcGuFAUZoHGmLWZz5U79YIfcth7bZy88EDj/PQvZW6NjbFpK3a1vTYCW+fvltX/WRUMjjOCTWrzMGdgIh66LJAIMGhyTlmaY3GSwQg9fNDaeE798iWNfMqSZvJO2eqwtzjisNmQjbyU6To9Mk2E8GArc9mQwce2hRc6bMpQb+oQX+l9lpd+pUMZ2q0f0quTZ2WqQx5oks/5nEs7Oi4CIJCxdQYR4pjLlXPlZQk/lygxNy/2KRs+3vIQz/NDgch6zqMP2amLM6Ac1mnIhM6mDJ/3/F2d6cwP6OJjkx4dtPnMHPzo1D55Zz/tdB19qzO8opcWjBiDRe7RimeFh34gA1ngmW/WtA27oNlq8kJjjkt9k39lHzRg6Bo4pk585EODLosq7cKfexp+4L8+TFnaNud53uKRFtl7mEi36uEFD/8iAFZ8wMM3pNC0vS4CufdnrPy5kllwnhFMEB2hJ5iTjsDPZ8wgAJmjp61omOewmhS3aOZ88rwJ/6Owy4TAPHKh3WorOdKa/ObBTZ7po7xzftoBLvi0atBOP6BLnimP9dWc8pHHerbpX/ol3fSD+cknbfsikAjMfJBre2PikBjLN5Vejl50e5cZsU7cImM2ztw8d1ya6Ep6zoo68INiArrMBVM0HVSjAAAgAElEQVTWnr97Z8YzlvqxO88zulbyV2d25TOYaK+9vD7bS5tyxJQ5CkloLSqZkzd5VvZCh1/Io4HrmYISrMSFwoZnG/q0QxqfVz7Bqx3ImM/GGjbmFwn1vUev/Vd04Q97bJv+Ob/VE+/sNTHvXoMrcboqrrfkdP5jEFidvyOWPLygzCDUABMiRubHJEjgTwfkMQlzePMAK9vExrOJwDV7ZCBffckjzUr+ljx5kIntqzbtlyb1TLukmbxpx1yTxx75iXGOtRWauU/KhR592aBNOTnGB3ndK3lJQtDS26TVFufbF4FEgLg524itjGuKBgoOLjQvdcbMbTXpVuvEbMYtF+O8HDkDOcdZ4hlbLDKRPWXd8hc5njv8tJlDXMteLDLnyEfP+jzruc542uk6MvNcO7+iT1oLE3qxpIdGXvoVHsqhz0bhknuqjqRhzN5T6LAPypIm9U1+7ZKWftLks/uMLvTMvJhynjle2X1UH3hivy39c+5WDw7IIcbgtzGPbPaj7TURyPNwxsKbWfuMYALHJKYRBBIyCG6bSdDEuEogFh4eRg7mTCTIy6S40g/N1Jc82rSSvyVPnumX8/TTftdSz7RLmsmbdsw1eexTvnOzT3lzzf3CN7Ff4ZV8WzYpK5PJFm3K67gInMk7osXllYWFb8O4vIxlaPeKxpm/lE1/9YJGf+a/layj/nK+odXOrRySdm/lhFvnGhmc11VDZp5raSymfKaH1uIBe9kXeMVkhevEAz5kwIe8bDxnEb+iSXptSvtT3+Rf2ScN/jI2pxJ/2oLNfJH4qLay+6gtnBHst+mvz/b66jM9c+LB3mgHc47ZS7AxLpK/449HIM/DGWueXlASlNM450xWBNmkmYWHATqdg4812krOan6VSAn8mai2dGrDSo5r037nUw+HFPvps835aQc8+Lpqk3ZFs4VT0qadOU6aHK9scp/Tv+lbyui4CIgA8XS2cQlmQcOYy83iS3mckSw8nfci9Hn2nJutczdpfebCXBWwU9YZf/MM5Vids9/KCehk7UojJ+S53pMBLbmAwpoxuRFesZxYIGviIS18yLCxx3N/J4288tBP+1Pfij9lEDv4Ag97yzP+pV3ogIaiibWPaCtcj9jB/mB3nqWJiXJW5whacEE/Y+StbAGXFpQi+Vp9noczlt3M2mcErxIXAYUMD5WFFnOMaQTb1COdfMqB1kYigc+kKI/P0G3xJQ10JIOZEKY/6Mvkpd3osLGOHdqi/a5PPVMmdPiUtkw7eE785KHX3+mfdkGDTZM/15WnDOkTe2noadMm7UBP4qMs8GkrAlsIEDdnGnG1upw4Rxl/yCT2uDDn2xUux0mbNhD/8wzk+hwjH/15MUvDWp6BPX/xzbMIv3lHfs7u5E9bPYtpuzwpV9uO9Ctct/hWtNikPWkre8gz+2PDTzGED9ttFnM+00ODTpt6fKafNiV+K/6UAWY8iz/yJg9+QAcNvrCH792wMe0+qh9sZqE4/VMWRfOqsV8UlfqdtjCHfPd0xd+5j0Ugz8MZS25m7TOCOUB52DWEYEKOHwKKsQfSdenpWYPGgGROPuUY5DMpum6fMpCDjZOHQ5RJCLrpD3zTP21XF8+0lf3Mr/QwJz/9tG3aoW3Jkz6qO9fByuZ68rCe9BOLuQ4tcrKlH+AkT+pe+ZIyOi4CIEB8HW1cTPwZdTZiLWM816GfReXW5SgfZ9vz7dxWv1dMrnhu+ZtnC9o8U8ib6zOHgAN8fuBf5cGVbas59M2iY0WnbWkvY//sTQ5BTn4Z4Hlr3+AVK/YdO2YDe/O0NLN4gS9tQqb7a47yGdrc9ykL/cjSlrn3PBNrxBfj92raf0Yfvs/Y0T8wTd8ZzzMELfNiJv20BbyMP2nO2Fna5yLgGTur5WbWvir4rCGlf18EOPCrxPFIK0z+mbhJIpmcH6mvsr4OAmfyDvE0LyXmtooSUIKeNyh8KGqI0YzTRJICh/PC5bknUx7o+ew1CgtspMjABgugPZ5Hr3mhX5FrwXCEF1qxxW/0ul9gD6biP/v5pZV1Y4P8Nde1Bx3iSo8+MXcvtQkeZcqf/a1YghZZyEUPdumfctBN/KxiVZpH9+jic6Rp91Z8s45/4JQfcMY3Gzi4L/DwxYEPezBtYZ35W1/klN3+/RDYOw97VrSg3EPnC6+ROK4GzVFYTP4mbp+3LoGjckv39RE4E5tcTNmI7bzkci3HGYdbF6n0yONCvdWQk3Jv0XupHrH3lqyz6/cUlBQNnutbei0wpJv7xTz+U3BQXFjwUYjMhk5o6FdyJv3qmWJ/yp7PK769OezB/ltfJPZkPHoNW7DrVgN74vYqnspHziqOscNiW1p7dObbaefbfywCZ/JvWtqCMtH4ZmMulFsX6T2QkMwITJMaFwuftiJwC4GrCe2W3K7/QOCegvKHlI6KQBH4aghczb8tKL9aJNSfIvAFELia0L6A63WhCBSBIvChCFzNvy0oP3TbqrwIFIEVAlcT2kpW54pAESgCReA4AlfzbwvK4xiXsggUgXdC4GpCeyfzqqYIFIEi8GURuJp/W1B+2ZCoY0Xg8yJwNaF9Xo9reREoAkXgNRC4mn8PFZQI76cYNAYaA42BxkBjoDHQGPj6MXCltD1UUF4RXJ4iUASKwFUEuLDaikARKAJF4P0RuJp/b2btq4LfH4JqLAJF4Ksg0LzzVXayfhSBIvDZELiaf1tQfradrr1F4BsgcDWhfQNo6mIRKAJF4KkIXM2/LSifui0VXgSKwBUEria0K7rKUwSKQBEoAj8QuJp/W1D+wLCjIlAEXgSBqwkN8/mZN3+dSXd4nj8B6Fr7j0WAn99jb17hJ/g+Mk7A4N5fLsN+fkZy62cU+XnIeTY+dvevacc/zvnqpx6vSbyPa2vvtvbhPm3P576af1tQPn9vqqEIFIGTCFxNaKiBdxYnXKLMf9YEfxK+T0fO75+v9vzM76Lj9Nb+UnwckUWc8JOUW3KuAMtvWR/5je/VF6Hffvvt7TfCKQT9rXOKl612y350zLOhLIoz9cwePuZepVF4//LLL6eKY/Z0+rV6xtet33YHuxWPP2Oaa8jAxmcVvez1Ldn4jM34dCQG3d/VWXRtr29BuYdO14pAEfgQBK4mNIyFdxYPFpQf4kyV/hsBiqG8dHP8l7/85T/WuJCzgNorepBFAZb0Kj4aT8QJl++RBi1Fgz6ge8YdcpCXbx63ilXokJlt2j1lJS3jW/avdEwZk2Y+T/r3fgY/4sLibgvPlV2r/VnRbc2ha6VvhdGKbkvu1XkK2fyCoB3EpLFJIUlczNja0znjbo821z59Qek3g3Tqu485NAREJrGjmBCQBOOrNg4Fvp05HCtflHMFo5W8vTl0YPNWMgNvcG/7gcDVhIaEFa/7/UPD5x3h3yPOKHJWxdczkfHCu0dHniPy/5EzvIqJlQ3EydZZnAVC0voWyIKD/fHjfvnsW8epP7FR17Q7aSY/z2nTav0WPzyThmeLN32wp2hhD269KfP80d/b0MmXDxqx8N4xvPpSYx0iLtjHPruP9/q8xU+xKBbQzHjZ4rs1f1VOC8pbyH7C9asFpYc+E/arua+N9yYm5Ry5jO7F4FZB6X7d69O9dr4S/9WEhg8rXvf7lXy8agv+cXHd25Dz3pdxFitchl7Aq54Lea9QYY2LfNWQd+uiZX3qBQ9kznmeeSuWZ5Qx/tAocnjWJ3MoZ5+5rZbFiUVJFiMzlhO/lKle7cce8KPnoz/qyOeJ8dSRz/k2DP08I/NW4eT5S/zS/qNj9M1CDYzfO47dX+1OjJyzv4WNdFd6ZKf8GS9XZMJzVU4LyquIvzCfBcrZYolDycF45XYlMeHTR/p1q6AEb+x776T4yvt8NaERH1xws3HhUhDMi2DSfYZnsKEgONqgvYrnUR1H6Yhzi4q8CJOfeYoqzoO0ue7YosniSB7WnZN25f9qDn1buWLSJ23yUPDYGGsLvUWs69lDO/2dOhO/5HWcNjGnbtcnP/LnPkAD9vJynrRrFsfQHMlb8KNLOdpzpvcLhAVwyjIWHnm+Uz4Yiceqn4V60pB3zt7FZ3BJWjBO3Y7zbCT91njG3RbdnG9BORH5As9XC0qD8ZUhuJKYSJB8PqodKSg5+FcP8Uf59Uy9V7EgPlZ7Db4k1bwknmn/M2WfPaevFFvszdwDL2vOCW+gKFpmkTPxZH2+GUO2F7cXqXyreFrNbcUPcia9tORb9aqPHj8mz7RLevyBdmIz+Vf4KYNem5yb+ib/lA/fpMln5KeNrM23lurOHp6Vf0mzN6aIRJfFJLQ845+NopLijbmMH8bicLQnV2Bv7uuqWKWYnm9MtedZPRjoxywUV/uJHdDNLwN79m3J2eNh7aEFJeC6yRiURvlsn5sDOH4Lcp0+AxdjDUpp2Gy/GaSjzElDj/xsrDOHvdJhN41556C71aRd6UFmrmdw6ovFn3TSpA9pv3zYlTT5LVGZytKHpEdf4qvcnINPusRqhUuuwyOe6madj3r0N/WxPmVLL918Rj5+Ki91i0OuMWbetVsYJfbowr4ZO9NmfbbXPnTS1J0YrfyS/zv27NOVRtLMN0TKILbYt7mfrm/17BE87qGx5F7KN9en/awbJ8qgT3u2YgA+7LdNPuZTJmPtg3euYQttymUOPUmfMeo6c9Nf9b0J3vkPvJ7lJOPSZ9/ST9ezOHAO3Lgks2G3tKwntqzNtprDtumzfJNeWnyflzWXPoUWPNpCj+y0S9nSUhSBgXhOnVv4KUebwAGZyEt9k3/KR86kyWfkIpPGGH4x14ZVj13Q0tt49kw4t+rxAx+mnrRLPmgpKpGdeyKe0mFH6kZ+4iTdXg8OxGDaxbnAhmc3/Zl2r/YDWjBJO2/Zh5wr7SbXGcEmIzY6GzIEgHno5mZCk3PKUg780OSmQ88ctDaeU798SSOfsqSZvFO2OuyRk3LRq5+MTdzQm4Bd94Chwzns4ZmPvPJ5EJPPOe2f/igD/ch0Pe1Rhnq0RR+1J3nxOzFmDF02aPjY3M+c0191QpPr8Oqvds5n7E5b4Jm+sj5pxGxilHTS5B5j35TPc9Los31iq8zUA53zaY/837Gf8XQUA/aBRA++mUD9c6KX4VF5yMGW3C90pH3GsTGKbGnYV5oxAJ9zxrJ77nPKgZeYy/hCRp7HlKnuPEfa92ZI/GfK1dcgedOdsvQr8WCcNMk/x9BaIGBXfricWc859M03QOCnHHFBZn6RUIb6c7/25sAe2as2ZSQt+thHevjd08kz7VKPuCITXgoA2uRH9owPZdDLS5yD09Q3+ad8ZECDPfKyt6lTzNE1i/q0Jcfwo0s5jG/FjPbLk/K0c7XGub9V1LGOnzZ99Xmv920pPOj3QwHLvjH/Xi3tBi/PCraIDfuVxfUR21ZxcYjvFtEZwR6KWzIJxJQLKPkMP2D8v/bOxLiRYwmiNsiGdWF9WRtkmSyQBTJMP97GTymVW3P0EAABIjsC6qvO7Oqa2gEpsiZQJhroCEoF+BZNrjuPbCW4PMBYR+5e0E9yJC97Dtv9Sf+gFw34eIMPH2gTH+tua8qBd/LD7U+MpN91a03nh54te3Ld7ZMcepc/0aScnLssjZUQfZ5nO2GELdkSF8dMtJPd2qN3vNAB/dQci2n/ndamszjjP+fD2ZJAVWDwgEEePdh7oXkkc8oLGTtb5+brHgOu0+VvxXbGnMt1WRpLl+YZw1p3uVu6c32KdekDl6OGv8icaLGTjzcKFs7S6f0MwYIHPHTYoZayoMsmHEVLL/98TeOUgR/KK8QUxQR2sqYYSx7JclugJVaFDXvYQUt+p5EM+BXvnKlsYh99zKVXZ655yocndeRcxSqYHxVustHjKG0UzWqfdq3w478whk94nJGh84IH/4k7ZDFnj3h8VHO7wdh9wi7OCLxX2xQXZ2T8esuCa0UwzkzGc8mQkx8lCUBJPeJRkiB4+GTTBWF9Sz8ykC99ziN5k/wteeKRXGTLTu3Royd9Fp1fMPGkz1pHBhjRJj7WHcOUgx9ph+bs0UTzc2L/cd1adhuEgbAVzWTDFBt+FhPergvZOWdNvssneo+V6WzP2pf+ub3yVfo1z14y0q6kY1/nkXvvNgeL1caZeozxgOdBS9JXccmYtbNtih14sY9zzzhyuR4rigHovXnMT7ENrcthLt2SIxtY9490bcWny92yT7LZp7m90r9lt/a91zn4msbYyUeNB3M+nLHD17CHOWfNw1wtZYFLtmkNXzx3OE/SJy18uQaPbKGHxn1EPj7xEb904g9+eUsa7bFObKd+6XY6aNTSJ9ZTh89VMLHmd03ytnp0oovPCt+WvMnOPdrc0z9UtJ44aX2v525QXKvAFi3xiHyPU+3dune7scPPlrPSP1TYW2lTXJzh//WWBdeK4L1k45eIy4PcvYSXiYwA5pPNk+KkH/rU5zySN8nfkice9fiGP+4TY7c3/dEF8wBIGslHlvCb+KCTDYxTzhk/nF966V231t2GxFY0Z23ws5jsdF3Izjk8jjs0eZY5h+asfemf2ytft7DTvmSox+apTVhPdO+wBharjULRi0WSKGdDcgd7tb2iRjTqp9hhT2eVcSQ+eo8VnT303jzmM7ZF53JYk27G4sFPtdS1FZ8uN3kkK/1ze0UjG+iPGjq3Gna6H1t0uc75Jl/KmuIpzwK5+OB523V5wSpajyV8g8b5U2/ahRzsp8HnGDLW3k+CgUbr6tP+1Jc60j63g4KIuMAv7hJjYcCa3zXp3+qxC12KM8doi+doPX05otc+PmCLn3/iJNqpKKRw51wo9rkP4tVYeYh91yGZihFiZ9oX3ZleuqH1WEEH8sFbe8x1fkeyp7g44mH/MGuvCJ6SjQLIjdGawASU1MMeawJkkv3TAXurM8mBJte5DMjzRnBmkG/pdD4fYy+6ZLsnB63JH12wPRrJllzmEx/rbmvqSv8l1/s8E+25bq057ZY9ue72SQ69y5/sTDk558yOzpL9PNuzGKVNU+wkjfvH2PHSmN5b2uN77zgmLlZbJkySJw8Ezswb8XD2YTjlhTwrj2HX4+s6d3i9ufyUK7qMuUmuaOlTl+ZOw9jl5r0Sba5P9zhpxJs9Z5F31Wm4R3xWmr99dr6UdTae8CVzhcv1sWjBFywVU86fetMu7FfRAh8y1VTEaU7vNBNWskk8qc/5oXH7sAN6CiEVS9iXPNCxn/dNOqceu9BFr/Fk/8S7tZZ2bdHlOucFr7fESXs6U83poaV4Yw9fVCAy9sb55X1nnzXwEx7OszqW3diiOKLHPs2RqQJz8mfS6XEx7W+tHWbtFcF7yYZDpClpIldgA0rqEZ34piDkEsOnJCUezdG3xec00BFgGWTpD/r4yA+NXY/sdbvYl63al10ehLJfND8VRdElPuSLV2vgSEs5mqd/zFOG5q4bXZLNOnOX5bg4n9OAJXyOmdawjyY/5L/mk6+yUzKkV7E06RYNvTCRLs2Rpyb97jv2Ow200ik+zeUXOvBBc9ksH+CTLl+TvHfswWulgTEPv2we49rjHEjonnC1lz382OLxpDXR6jx1vqwnjWLA40Br9GrEl+tiDo/HHHPFpOJGMrCB/UlPxlbGMnM+3pDj9mBH0siGlO9yGOsBnOua45P80tpez/lh2/TWhT0/D/w40/DB/d3j2aJ1funFRnxjzx/qHoPs6RzRS8GWDRrhPGGVNiWmzo9s2ccYvNCZ9yh5mGM3BdPZohK70OW2M3d/09ejedp1RM8+5zDd/cRJsvytn9bo8Z97oPOTLcjnfM/4hR0eoy7/zBgssZtzwA7pRj/jbOiSvbmXc4+L3NubH96yFcFTskE5TiNHH8BmLDC174ayB40fjPgkB0A5SE+2yNC+epfBPoGQPMjh4y39gc+TqeyWHuZq2KZ1etkuW7RPrzb5zB78ku18Ll/70O/JcR7ZIv2uJ9fARryJE7S+D13iKyyFg2QpBqQvMZUvwsn9Fw9nInnYga60Ufv0NMmdMHDa3J9iRzbLHs3lm3zWHDrhlTyav3uvczqDA8mTpJqNOMjzEw3004NF++o5Jz46U8WG9tXnvucJaBQDil/JSfsUl76Pfr9P7KFPLXVL1xRv8OouTbGsuJR+14s+5umbfJJc2ZX91sNZdPjhfml96nkwYuv04Jzo8edMwwfi4kyDFhvUsAX7wV9Y5D4YbNkMrfynz8IOPfArZojhpEmbkCO5jHXmjPkkLpNt8MufvFPMwQubJl5hA7/HHuvwsuZxKvozvdt1hh77KICFn/OARcYnNoNX+kXspZy0haIOXuROjf0pZ020uYY92Ap+aujR2WD33idjRjK8z7jwvb3x4S27KnhPafeuIzBdzOvS/stJQHIxvHH+W5fC6Y7GyM4H0RHPq+6DYeJ45Av0niCO6L/6/kreIT4z6bM2PTiEmx4uPBj2HmhXzlI6vMcWfNrT5fRfbawH3OQXD1dwVmEy0fga9Hz2Gg99YoAHL2d8Nvcov+7J1h60fs/R5Xaxz7nL9+wlRz2ysBnbt4oN5IETtMSTYpxevrpNyOOz1c7ggjxsx7epGCFvgTE0j2yy64xOMAUf+qmxDhZg6h90eG4BA/BkDR58Z86ZpP/ss+4xgW7W985ksi/XJn5sQhc2T77gF+vuT8rVHNor7ZDrquArxpTnGAGCljPJ4D3mPKaQbH/ooWsK3mNp/6V4l4JywvC/SPw6A+97nemv2l5jZSXvZILk4UrSPmoe51u0JGc+H23YhE9ndH5U1zPyq/DZso3zOoMzclYwJDYods7EA7Zxf8/+ww5az40Zh8hjDZspEPEPWygyJh/QS8E2FW1buPk6utDhvqLb505/doztFCoflXNW31k67JpwTP6PYOqyOO9JH4Xq1j8AwOzZcHOftsYr+ddltKB0NF5grIKF/h6NhORJksDy+VWd71JQ4ucqXtCfeZhexf4V+a4mtFv7yrnc4mx4sL9zQXnrc6m8IlAE7ofA1fzbgvJ+Z1LJRaAIXETgakK7qK5sRaAIFIEi8H8ErubfFpQNoSJQBJ4OgasJ7ekcqUFFoAgUgRdD4Gr+bUH5Ygddc4vAOyBwNaG9Azb1sQgUgSJwTwSu5t8WlPc8lcouAkXgEgJXE9olZWUqAkWgCBSBfxC4mn9bUP4DYQdFoAg8CwJXE9qz2F87ikARKAKvisDV/NuC8lVPvHYXgS+MwNWE9oUhqWtFoAgUgYcgcDX/tqB8yPFUSREoAisIXE1oKzpKWwSKQBEoAr8icDX/tqD8FcuuFIEi8MkIXE1on2x21ReBIlAEXh6Bq/m3BeXLH30dKAJfD4GrCe2ZkdBfQnlmG2tbESgCReBq/m1B2dgpAkXg6RBYTWj8aTj+/Bl/dejMh+Ju68+lbYEx/Wk99PI50/iLO9NfuJr+nNsZeaUpAkWgCNwDgdX8KxtaUAqJ9kWgCDwNAqsJTUXkWQegz4KSwlBysoeWv8Gcf5dXdK53S863b99+/p1o8ahHLgVuWxEoAkXgGRBYzb+yuQWlkGhfBIrA0yCwmtBUnJ11YKL3N4X87W0KwKN2JMf5pzeUrtNpOy4CRaAIfBYCq/lXdragFBLti0AReBoEVhPaVNjtOXNE/+PHj78pKqfGG0V9db0l588///zlbef0hhJZ+aZ00tm1IlAEisCjEFjNv7KrBaWQaF8EisDTILCa0LKw422g1tR///79sBAEAH5WEv0UeuKlGNTX3W6b9hM4ZOTPXE5vKJOv8yJQBIrAZyPgOW7FlhaUK2iVtggUgYcgsJrQsrCb+H0t6d2p3ONtJMWoCsSzclwm472CUm88k6fzIlAEisCjEfAct6K7BeUKWqUtAkXgIQisJrQsAid+X0t6OUXRyNtIL/Cg9a+l9+Rs/UIOMqavvCUbmVtfscu29kWgCBSBRyDgOW5FXwvKFbRKWwSKwEMQWE1oWSBO/L6W9HKKwpGff+Rtor7i5u0ka2p7crZ+yQa5yMyiER168yn57YtAESgCn4mA57gVO1pQrqBV2iJQBB6CwGpCywIRfq2pd5lac2co7lin0fOLOazxZtHbkRynZUwRqa/M/U0nhSS/lCOdydd5ESgCReAzEPAct6K/BeUKWqUtAkXgIQisJrQsECd+X0t6ijsv7PjKm6+v+f9D+jrO78lJcCgmKRr15pI5spkj279aT97Oi0ARKAKfgYDnuBX9LShX0CptESgCD0FgNaFlgehfUctgFXXMk1403vN2kmIwv5J22/bkUJBCmwUpX33nmuvtuAgUgSLwmQh4jluxowXlClqlLQJF4CEIrCa0vcJuMvgMff7spOS4bZMcvX3UHr033krqK3Bf77gIFIEi8AwIeI5bsacF5QpapS0CReAhCKwmNIo2vfnzQm5rLNotZ/g6On+BRrT+9lPy2eNNJjy8mdRbTd8XjegoKnkL2lYEikAReCYEVvOvbG9BKSTaF4Ei8DQIrCa0LNyOHNmj3ysmU+6eHGi1z1tLfiGHYlNNP1+pv8rTn6cUMu2LQBH4TARW869sbUEpJNoXgSLwNAisJjQKNX9zeOQItPl2UEVfrqcsdOl/A8TPWG69yYSPN6H8lvjW20h0QiM5erOZOjsvAkWgCDwKgdX8K7taUAqJ9kWgCDwNAlcT2lUHKCJXClL08PbR/zdAk26KT+iOWgvJI4S6XwSKwKMQuJp/W1A+6oSqpwgUgdMIXE1opxWUsAgUgSJQBEYErubfFpQjnF0sAkXgMxG4mtA+0+bqLgJFoAh8BQSu5t8WlF/h9OtDEfhiCFxNaF8MhrpTBIpAEXg4AlfzbwvKhx9VFRaBInCEwNWEdiS3+0WgCBSBIrCPwNX824JyH9fuFoEi8AkIXE1on2BqVRaBIlAEvhQCV/PvqYIS4f0Ug8ZAY6Ax0BhoDDQGGgNfPwauVMinCsorgstTBIpAEbiKAA+stiJQBIpAEXg8Alfz72HWvir48RBUY8sdqBEAAAr0SURBVBEoAl8Fgeadr3KS9aMIFIFXQ+Bq/m1B+WonXXuLwBsgcDWhvQE0dbEIFIEicFcErubfFpR3PZYKLwJF4AoCVxPaFV3lKQJFoAgUgX8RuJp/W1D+i2FHRaAIPAkCVxPaLcz//fff//7rr79+EcXf3OZvb/NnGvmTi4xXGn/aEdn9M4srqJW2CBSBRyNwNf+2oHz0SVVfESgChwisJjSKNIq11SJvMoTCcfq73r/99tvPYpJi8/v37xPr4Ro2Tn/be9XuqSjl74bzaSsCRaAIfASB1fwrXS0ohUT7IlAEngaBKwmNQo+iT8UZxRXF2/T58ePHzwJ0cpiCcusNJfTsQbPV2FfhmLp5s5l72KJiVTL3bEdG0sMnXZLRvggUgSJwBYEr+Rc9L19Qfvv2bfPBcAXIW/Hw0MC2WzUOWB/JRL7WeIjykNt70Ikv+z/++OOmtqb8nGMrduvBn/udFwHi40oj/vlKmtjaK7DYm95CohMZKii9sNN9Zo+x5DNGp9pRwSm6vd7vxtn7KXv25HavCBSBInCEwNX8e5i1rwo+MvhW+yRzirdna7csKCdZPDzybK4WlHo4PhJDbH3Gc3skBtW1jUDG9jblvEOxyB0hzlRoee9FIxJED41yCr0KS2jgoR0VjL5Poel6c8zbRt5Q7jX2KSqnxptK2SjZE13XikARKAJnEbiaf1tQnkV4kW4qAhdF/EOuB9w/C/9/uOkBp3Xmuaa9rZ6HEcHjb0S2aG+5zgPyatDe0o7Kek4EVmKDoszfEBLLXiBOHlJ8qRBj338mkTvke+LX3WJPY+15n/su2+m4A8jhLegWDetggY8qGMkH8tdx0r7r6LgIFIEisIqA55UV3haUK2gt0L5KQXlLOxfg+VnAErRbb15WZJX26yGwktAounhTp6+wKdBoewVWFpSO4K0LSsmm0FTxu6df9JMPyOAXglSAOk57/rrMjotAESgCewh4Xtmjy72bFpQUJyRjEhsGuVGaq/c3YtDr6yXt05M8vTH3fYqR6e0da06HfG/ss4a9otMbB7cduqMmfnrXo0ItbXa/ReM6RE+vsevATp8zlu30Gkum+wMtOr1N+KVe5t4cN2S639Dho9vIPjxp26Tb9XT8vggQPyuNGPNCEl7WiDn6/LC+9Y8Z8bDPR7zKB9wHxqxTIHqBh172M9blC/LwzfMAeyoQRac19Pj9k07ROU6yU3tTj126m2lj3luXLVnOL9smf0TfvggUgddDYLr7Z7w4zNorglVoZKLKhAOdkjNGkgih8TXJkhNKdtCqQQ8ftGrMXb/4nEZ8kiWa5E3Z0qEeOS4XvciiyX63hXH66HP4eHig1x8iqQc6ZLnsaQ0bUn76xFw4IENY+MPWZaRe0buM1AEPa0f2or+tCIAA8XKl8ZZSbyp5a+lxTIxSANK4X7qrrgd6+Dyeta/4hVdj7Xmvff/aHXn6SL7m9NwxtxV52IoMdOkrbopX+QeN4yR5bouPMx9AL53YjCx6NeWwrTm88PCZsBRf+yJQBF4LAc8rK5YfZu0VwZmAtgxRItI+iS31ZIKbaOD3YmuLJtedRzaQtPMhkQlYtOonOdqbeOW3ku9Ek34jb9Iz2etrKvT8AYEsx0I0eqiwP63JJ9km+7XufqSPonHbtOZ8WmtfBEAg88FZVPwXXJDBmz+9/SP2+dAo0IhJ7fF2k0KPmKRoy3sDD/Q09jT+uRD/0b7rdpL0TfSuE/tkKz1+sUYu8Oay3D+n0XjvvuEP+94yF6BLNolu675rv30RKAKvh4DnlRXrb15QZsLDGCUmjPSPChOSVDogHhU7JLwpiXuxtZUwM+k5j8Ca5G/JE4/kYrvs1N7EywMDWj04ztAg76y97oN0Od4+Rq5oJttFqzOC3v3Vvnqd++QTvG4bcxq08LcVgUTgSlwQq3oDiTxkqBgj1lRwEfcUjcSzCkqKNd0DYlV31O1incaexswlQ7R6M6l59umb9IoOeV64oY+CVz6Ijt5lyT/f97FyKjzI8sb9ZX36YB82sJe4sMe65wmX23ERKAKvhwB3+ko75FoRTJJSYSFjlIg8QWYSYi/1KPkp2U4FCTq82Jr0Q5P6nEd2TvK35IlHvez3xDrxCgsl5TM06Dhrr/uQumSr94mx7zFGHj7pTBPHpGc++SRZyPO2Res0Hb8nApkP9lCggCPe881iyuCeEoPKKVsyoUGe3hLCx0f3gD3GWufNpstk3eepJ+3K/WmOLejJ4tVlyZ6J39eUG+CVnVOOmXjg9QY/clpQOiodF4HXRsDzyoondy8olXDcKK0pCZEI04EsdraKD/jYo01ypvUpefIQ+WjBgy3YQJvsVSJXUp7sTRpknbXXfUj8fho1/MdtHrb/82Zisi15Jp+gwYfE1+1NOZ2/NwKZD47QoKhMnpwTm7qfkkehlo241B31PcUvexr7vsZ8Pa3cpjXv0y7f2xrnz06KzmVN/olu6v3++Xii3conuu97/k7yulYEisDzIuB5ZcXKuxeUKkL0L2ElJgxWElJScsNFJz7J8QcCRQpyVFCKR3PkbfE5DXRTQs2iEH18aOjS2PXI3uR1GmzyuXhkKz6JBjr0nLE3fWDuOCMLXS4rZee+zkZnBT0yvUGjc5nOQHbQe0vdvtfxeyOQMXaEBm/ukkdzikZ9Da04RR6xyno24tTvn/YVv+xprD3v/ec4fV1j2aX5Uc99VY5IWrff72HSMee+6R4zxw7lAuQzd3xEI1n47LaLhzWXK/r2RaAIvCYCfs9XPPhvZTBwrggmOZG0spGkkKOPEpGSkPadjz3oPZGKT3KU2JUUxa999S4DmqmQIVnmQyL9gc/9k93S48k4edGLvdD6wyplyG+nOWvvlg+yj/7IR+yExnnclmk/8ZefkgH+aZv8zLNBflsRIHZWmnKD8yCDN3v+vxPyO0qcTsUfsZoxj1zdffbyHkkvBd5RTK/4xt06kifd+Ob+aV193sv0IfexUzlaMsCAdT7wC/ekE337IlAEXg+BlRzl3h1m7auCXUnHz4uAHiL3fiDw8PEHmB5Ez4tMLftMBFbzDoUcP2PoTb8ZrTViHRrFIsURY95u6hdhmKM7f1YRGbIJOR7Lkk+/VdDxlpTikAJXhanz5Zj7yC8YTV/JOy3FMnTYg29ni0+X8ZGx7vG988dHbCxvESgCawgo161x/f13C8pVxL4gPQ+4rQfhrdzlgecPYcb5ZvNWuirn9RG4mtA+6jkF2lZRpviloJzuC8XfUQFIzPvX1JO9yDiiST7s8d9wz/17zVtQ3gvZyi0Cn4fA1fzbgvLzzuxpNPNQOPPW5CMGe0HJ2wwCtm81PoLo1+a9mtC+NirP510Lyuc7k1pUBD6KwNX824Lyo8iXvwgUgZsjcDWh3dyQCiwCRaAIvBkCV/NvC8o3C5S6WwReAYGrCe0VfKuNRaAIFIFnRuBq/m1B+cynWtuKwJsicDWhvSlcdbsIFIEicDMErubfUwUlwvspBo2BxkBjoDHQGGgMNAa+fgxcqU4PC8orQstTBIpAESgCRaAIFIEi8D4ItKB8n7Oup0WgCBSBIlAEikARuAsCLSjvAmuFFoEiUASKQBEoAkXgfRBoQfk+Z11Pi0ARKAJFoAgUgSJwFwRaUN4F1gotAkWgCBSBIlAEisD7INCC8n3Oup4WgSJQBIpAESgCReAuCLSgvAusFVoEikARKAJFoAgUgfdBoAXl+5x1PS0CRaAIFIEiUASKwF0Q+B8PG28vHRxQgQAAAABJRU5ErkJggg=="
}
},
"cell_type": "markdown",
"metadata": {},
"source": [
"### (2)随机函数模块的使用\n",
"![image.png](attachment:image.png)\n"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"反复执行下面的语句,观察执行结果"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import random"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"random.random() #产生一个0~1之间的随机小数"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"random.randint(50,100) #产生一个50~100之间的随机整数"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"random.randrange(1,101,2) #产生一个100以内的随机奇数"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"L=[\"aa\",\"bb\",\"cc\",\"dd\",\"ee\"] \n",
"random.choice(L) #随机抽取L中的一个元素"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"random.sample(\"abcdefghijklmn\",5) #从字符串中随机抽取5个字符"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"random.shuffle(L) #打乱L列表的顺序\n",
"L"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 试一试\n",
"从random库中选取相应的一个函数,实现满足下列条件的语句\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#随机生成100内的10个整数\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#随机生成0到100内的1个奇数\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#从字符串'abcdefghijklmnopqrstuvwxyz'中随机抽取5个字符\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#随机选取列表['周畅','吴用恭','郑皓侃','王边丞']中的一个姓名\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3.数值数据的典型问题的算法设计 "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### (1)累和算法 \n",
"有很多数学多项式是由n个子项累加构成,相邻子项有规律的变化。这一类问题的解决应用累和算法。累和算法的通项公式为: \n",
" ` s=s+item `\n",
" \n"
]
},
{
"attachments": {
"image.png": {
"image/png": "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"
}
},
"cell_type": "markdown",
"metadata": {},
"source": [
"【例】编写程序,用下列公式计算π的近似值。 \n",
"![image.png](attachment:image.png)\n",
"观察这个多项式的每一项由三部分构成:符号、分子1和分母。分子不变,符号有规律的正负变化,分母从1开始每次增2,item的变化规律可以用通项公式表示如下,其中flag表示正负号,t表示分母,通项公式为: \n",
"s=s+item \n",
"item=flag/t \n",
"flag=-flag \n",
"t=t+2 \n"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"循环控制一:累和n项后,输出π的近似值。"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"n=1000\n",
"3.140592653839794\n"
]
}
],
"source": [
"import math\n",
"n=int(input(\"n=\"))\n",
"total=0 \n",
"t=1 \n",
"flag=1\n",
"item=1\n",
"for i in range(n): \n",
" total=total+item\n",
" flag=-flag\n",
" t=t+2\n",
" item=flag/t\n",
"print(total*4)"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"循环控制二:公式中每一项的绝对值小于0.000001。"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"n= 500000 \n",
" 3.141590653589692\n"
]
}
],
"source": [
"import math\n",
"total=0 \n",
"t=1 \n",
"flag=1\n",
"item=1\n",
"n=0\n",
"while math.fabs(item)>=1e-6: \n",
" total=total+item\n",
" flag=-flag\n",
" t=t+2\n",
" item=flag/t\n",
" n=n+1\n",
"print(\"n=\",n,\"\\n\",total*4)\n"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"循环控制三:π的误差小于0.000001。"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"n= 2000000 \n",
" 3.141592153589724\n"
]
}
],
"source": [
"import math\n",
"total=0 \n",
"t=1 \n",
"flag=1\n",
"item=1\n",
"n=0\n",
"while True: \n",
" if math.fabs(total*4-(total+item)*4)<=1e-6:\n",
" break\n",
" total=total+item\n",
" flag=-flag\n",
" t=t+2\n",
" item=flag/t\n",
" n=n+1\n",
"print(\"n=\",n,\"\\n\",total*4)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 小试身手\n",
"1.编写程序:输入一个正整数 n, 计算并输出数列1、-1/2、2/3、-3/5、4/8、-5/12...的前n项和。 要求以浮点数形式输出数列前n项的和。 \n",
"测试用例如下: \n",
"输入:2,输出:0.5 \n",
"输入:10,输出:1.0666666666666664 \n",
"输入:1,输出:1.0 "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### (2) 求平均值 \n",
"平均值是累加和除以项数的计数,是累加算法和计数算法的叠加。 "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"【例】输入一组任意浮点数,求所有负数的平均值。输入“quit”结束。\n"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"请输入一个浮点数:34\n",
"请输入一个浮点数:-56\n",
"请输入一个浮点数:95\n",
"请输入一个浮点数:98\n",
"请输入一个浮点数:-26\n",
"请输入一个浮点数:quit\n",
"负数的平均值为:-41.00 \n"
]
}
],
"source": [
"s=0\n",
"n=0\n",
"x=input(\"请输入一个浮点数:\")\n",
"while x!=\"quit\":\n",
" x=float(x)\n",
" if x <0:\n",
" s=s+x\n",
" n=n+1\n",
" x=input(\"请输入一个浮点数:\")\n",
"if n>0:\n",
" print(\"负数的平均值为:{:.2f} \".format(s/n))\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 小试身手 \n",
"2.输入一组任意浮点数,请分别统计正数和负数的平均值。输入“quit”结束。\n",
"运行示例: \n",
"请输入一个浮点数:-2.56 \n",
"请输入一个浮点数:-68.93 \n",
"请输入一个浮点数:176.5 \n",
"请输入一个浮点数:0 \n",
"请输入一个浮点数:-3.22 \n",
"请输入一个浮点数:0 \n",
"请输入一个浮点数:35.88 \n",
"请输入一个浮点数:quit \n",
"2个正数的平均值为:106.19 \n",
"3个负数的平均值为:-24.90 "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 小试身手 \n",
"3.使用random模块函数,随机生成100个值为【-1000,1000】之间的整数,分别统计其中能被3或7整除的数的个数。 \n",
"运行示例1:\n",
"455\t-471\t147\t-98\t \n",
"能被3或7整除的数有4个,均值为8.25 \n",
"运行示例2:\n",
"511\t720\t-717\t-468\t780\t-198 \t\n",
"能被3或7整除的数有6个,均值为104.66666666666667 "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"\n",
"\n",
"\n",
"print(f\"\\n能被3或7整除的数有{n}个,均值为{s/n}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### (3) 求最大值最小值算法\n",
"求最大值算法的基本思想是假设第一个数是当前最大值,然后逐个与第2个数、第3个数……最后一个数比较验证,如果碰到一个比当前最大值更大的数,修改当前最大值。当所有的数的比较完毕,当前最大值就是所求的最大值。求最小值也是同样的思路。\n",
"这就好比是擂台赛。首先台上有一位守擂的擂主,然后不断有人上来攻擂,如果把擂主打败,就产生新的擂主,最后站在台上的就是胜利者(最大值)。\n",
"【例】输入一组浮点数,求其中的最大值,输入over结束程序。\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"请输入一个浮点数:9.34\n",
"请输入一个浮点数:-0.25\n",
"请输入一个浮点数:190.382\n",
"请输入一个浮点数:88.27\n",
"请输入一个浮点数:-82.99\n",
"请输入一个浮点数:over\n",
"最大值是 190.382\n"
]
}
],
"source": [
"maxnum=input(\"请输入一个浮点数:\")\n",
"if maxnum != \"over\":\n",
" maxnum=float(maxnum)\n",
" \n",
" x=input(\"请输入一个浮点数:\")\n",
" while x!=\"over\":\n",
" x=float(x)\n",
" if x > maxnum:\n",
" maxnum=x\n",
" x=input(\"请输入一个浮点数:\")\n",
"\n",
" print(\"最大值是\",maxnum)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 小试身手 \n",
"4.思考:需要同时输出,最大值的第几个数,如何修改程序?\n",
"运行示例:\n",
"请输入一个浮点数:9.34\n",
"请输入一个浮点数:-0.25\n",
"请输入一个浮点数:190.382\n",
"请输入一个浮点数:88.27\n",
"请输入一个浮点数:-82.99\n",
"请输入一个浮点数:over\n",
"最大值是第3个数190.382"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### (4)穷举法\n",
"穷举法就是对该解空间范围内的众多候选解按某种顺序进行逐一枚举和检验,直到找到一个或全部符合条件的解为止。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"【例】百钱百鸡问题\n",
"京城有位卖鸡的张老汉,他有个儿子非常聪明,擅长算术,是远近闻名的小神童。宰相听说后想试探究竟,于是派仆人到店里打听鸡的价钱。张老汉告知:公鸡五文钱一只,母鸡三文钱一只,小鸡一文钱三只“。仆人给他一百文钱,要求公鸡母鸡小鸡都要,数量不多不少一百只。张老汉怎么想也想不明白,只好请教儿子。小神童不慌不忙掐指一算给出了答案。请用穷举法解决百钱百鸡问题。 \n",
"本例中列举方案包括公鸡几只、母鸡几只、小鸡几只,涉及三个变量,需要三个变量的迭代列举,通过三层循环实现。验证条件有两个,一个是100只鸡,另一个是100元钱。\n"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cock:4,hen:18,chick:78\n",
"cock:8,hen:11,chick:81\n",
"cock:12,hen:4,chick:84\n"
]
}
],
"source": [
"\n",
"for cock in range(1,100):\n",
" for hen in range(1,100):\n",
" for chick in range(1,100):\n",
" if cock+hen+chick==100 and\\\n",
" 5*cock+3*hen+chick/3==100:\n",
" print(\"cock:{},hen:{},chick:{}\"\\\n",
" .format(cock,hen,chick))\n"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cock:4,hen:18,chick:78\n",
"cock:8,hen:11,chick:81\n",
"cock:12,hen:4,chick:84\n"
]
}
],
"source": [
"#优化算法\n",
"for cock in range(1, 21): #公鸡5文一只,最多20只\n",
" for hen in range(1, 34): #母鸡3文一只,最多33只\n",
" chick=100-hen-cock #根据列举的公鸡数和母鸡数计算小鸡数\n",
" if 5*cock+3*hen+chick/3==100:\n",
" print(\"cock:%d,hen:%d,chick:%d\"%(cock,hen,chick))\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 小试身手 \n",
"用穷举法,打出所有的水仙花数(水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身) \n",
"运行示例 \n",
"153\t370\t371\t407\t \n",
"提示:三位数num由abc构成,列举a从1~9,b、c从0~9。如果a、b、c的三次方之和等于num,则符合要求输出。"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.10"
}
},
"nbformat": 4,
"nbformat_minor": 2
}