第 2 集 · A2 · 5 分钟
校园学习 · 第2集 · Задача №27 ЕГЭ по информатике на Си
适合听读练习的俄语真实语料。片段原文开头:а k делится, то есть остаток деления на 26 равен нулю, делится на 26, в этом случае я говорю переменная m, которая у меня счетчик вот этих случаев плюс плюс.

中俄字幕
а k делится, то есть остаток деления на 26 равен нулю, делится на 26, в этом случае
如果k能被整除,即对26取余的结果为零,则k能被26整除,在这种情况下。
я говорю переменная m, которая у меня счетчик вот этих случаев плюс плюс.
我说的是变量m,它是我用来统计这些情况的计数器,执行自增操作(m++)。
И ответ это всего лишь распечатать вот эту самую М на
答案就是直接输出这个m的值。
экран. Ну, можно перевод каретки добавить.
当然,也可以添加一个换行符。
Собственно, все.
就这样,全部完成了。
Вот весь алгоритм существенный, ну плюс еще организация считывания.
这就是整个核心算法,此外还需加上输入读取的组织部分。
вот можно попробовать на конкретных данных которые нам будут введены да это у нас.
我们可以用具体的输入数据来尝试运行,也就是我们即将输入的数据。
числа, сейчас секундочку.
这些是数字,稍等一下。
это у нас числа.
这些就是我们的数字。
4, 2, 6, 4 элемента, а сами элементы 2, 6, 13, 39.
4、2、6、4——共四个元素,各元素分别为2、6、13、39。
и он находит, что четыре пары существует таких.
他发现存在四对这样的数。
Так, ну что же.
那么,好吧。
замечательно программа решена, да, это полный переборное решение, но оно
太棒了,程序解决了!是的,这是一个暴力枚举解法,但它是
неэффективно по памяти.
在内存上效率低下。
потому что мы запоминали все эти числа.
因为我们存储了所有这些数字。
Оно неэффективно по времени, потому что мы делали полный перебор.
它在时间上也效率低下,因为我们进行了暴力枚举。
Здесь n квадрат действий, то есть вот этих вот действий, проверка умножения,
这里需要 n 的平方次操作,即这类操作:乘法检查,
проверка остатка, их n квадрат штук.
余数检查,总共 n 的平方次。
Как сделать эту программу так, чтобы она была эффективной?
如何让这个程序变得高效呢?
Ну, значит, нам придется отказаться от считывания этого массива, а значит, нам не
那么,我们就必须放弃读取这个数组,也就是说,我们无法
удастся пробегать по нему два раза.
能够在其上遍历两次。
Я один for оставлю сейчас на самом деле.
我现在实际上会独自留下。
Но вот это все никак нельзя сделать.
但这些完全无法实现。
Я сейчас уберу отсюда переменную m, она мне понадобится в самом конце.
我现在将移除这里的变量 m,它在最后会用到。
Да, как я ее вычислю?
是的,我该如何计算它?
Значит, мне нужно придумать по сути индуктивную функцию, в
因此,我本质上需要设计一个归纳函数,
которой может быть не одно число параллельно считаемое, а много.
该函数可同时计算多个数值,而不仅限于一个。
Но считывать числа я могу только один раз, однопроходно.
但我只能单次读取数字,即单趟扫描。
То есть я завожу переменную x, и я здесь же ее считываю, и запоминать никуда нельзя.
也就是说,我声明一个变量 x,并立即在此处读取它,且不能将任何数据存储到其他位置。
Так, замечательно.
好,太棒了。
Далее. Мне понадобится запоминать количество. . .
接下来。我需要记住数量……
Ну, чем характерно число 26, делимость на 26.
那么,26这个数的特点是什么?即它能被26整除的性质。
Дело в том, что 26.
事实上,26……
это 2 умноженное на 13.
等于2乘以13。
Соответственно количество пар произведений, которых кратно 26, будет по сути равно
因此,乘积能被26整除的数对数量,本质上等于
количеству. чисел, которые кратны двадцати шести,
能被26整除的数的个数,
да, то есть k двадцать шесть я назову это число,
是的,也就是说,我把能被26整除的数的个数记作k₂₆,
умножить на количество чисел, ну всех,
再乘以所有数的个数,
кроме тех сколько чисел кратных двадцати шести.
但要排除那些能被26整除的数——即有多少个数能被26整除。
умножить на общее количество чисел, ну можно n минус k26 написать, а можно написать
再乘以总数,可以写成n减去k₂₆,也可以直接写成
так: количество чисел, которые делятся на 13, плюс количество чисел, которые делятся
即:能被13整除的数的个数,加上能被2整除的数的个数,
на 2, плюс количество чисел, я называю его k1, которые ни на 2, ни на 13 не делятся,
再加上既不能被2整除也不能被13整除的数的个数,我称其为k1。
ну на 26 автоматически.
当然,能被26整除的数自动满足上述条件。
Но это не все.
但这还不够。
это не все безусловно к этому делу надо добавить числа
这显然还不完整,还需额外加上一些数。
пары точнее чисел те из которых которые не делятся на двадцать шесть но зато делятся
更准确地说,是那些不能被26整除、但其中一个数能被12整除,
на двенадцать а другое число делится на 13.
而另一个数能被13整除的数对。
Естественно, что там, поскольку эти числа принадлежат разным допустимым числам, то
显然,由于这些数属于不同的允许数值范围,因此
есть все множество чисел я фактически.
实际上,我将全部数字集合划分为若干部分。
разбиваю на четыре части, делящиеся на 26, да, делящиеся на 26, а все остальные не
其中一部分能被26整除,其余所有数则不能被26整除。
делятся на 26.
被26整除。
Вот так вот мы сделаем.
我们就这么办。
Делящиеся на 26, все остальные не делятся.
能被26整除的,其余的都不能被26整除。
Среди них я откушу те, которые делятся на 13.
在这些数中,我只吃能被13整除的。
делится на 13, а остальные не делятся на 13.
能被13整除,其余的不能被13整除。
Соответственно среди, ну понятно, что среди тех, которые делятся на 26, все делятся
因此,在那些能被26整除的数中,显然全部都能……
на 13 на самом деле.
实际上都能被13整除。
То есть в принципе можно было бы как- то там по- другому очертнуть, но я не буду
也就是说,原则上本可以换种方式来界定,但我不会……
сейчас, да. У меня все числа, которые делятся на 26, делятся и на 2.
所以,我所有的能被26整除的数,也都能被2整除。
Но я, кроме этого, отдельно буду рассматривать числа, которые делятся на 2, но не
但我还会单独考虑那些能被2整除但不能……
делятся на 26.
能被26整除。
то есть вот эта область- это пересечение множества всех чисел, которые делятся на 2.
也就是说,这个区域代表所有能被2整除的数的集合与其他集合的交集。
Ладно, я надеюсь, что понятна логика вот этих вот k2 и k13 и k26.
好吧,希望你们理解k2、k13和k26这些符号的逻辑。
来源:Тимофей Хирьянов · CC BY 3.0