Вариант 10. Дискретное извлечение корня Дискретным корнем из натурального числа n по модулю m называется такое наименьшее натуральное число k, что k
2
≡ n (mod m), то
есть такое, что число (k
2
– n) делится на m без остатка. Программа
должна извлекать дискретный корень из заданного натурального
числа по заданному простому модулю, если это возможно.
Входные данные. Целое положительное число n и простое число m.
Выходные данные. Дискретный корень из n по модулю m, либо
сообщение о том, что его не существует.
Пример текстового интерфейса пользователя
Discrete Square Root
Input a positive integer>13
Input a modulo>17
Result: 8
Continue? (Y/N)>Y
Input a positive integer>3
Input a modulo>11
Result: 5
Continue? (Y/N)>N
ru : array[1..33] of Char = ('а','б','в','г','д','е','ё','ж','з','и',
'й','к','л','м','н','о','п','р','с','т',
'у','ф','х','ц','ч','ш','щ','ъ','ы','ь',
'э','ю','я');
en : array[0..33] of String = (' ','a','b','v','g','d','e','ye','zh','z','i',
'y','c','l','m','n','o','p','r','s','t',
'u','f','h','c','ch','sh','sch','`','ы','',
'ea','yu','ja');
{ транскрипцию записал не заглядывая ни в какие справочники - можете кидаться тапками }
Function GetIndex(ss : Char) : Byte;
Var ii : Byte;
Begin
ii:=1;
While (ii<=33) and (LowerCase(ss)<>ru[ii]) do Inc(ii);
If ii in [1..33] then GetIndex:=ii else GetIndex:=0;
end;
Function Trans(S : String) : String;
Begin
If Length(S)>0 then Trans:=en[GetIndex(S[1])]+Trans(Copy(S,2,Length(S)-1))
else Trans:='';
end;
Begin
Writeln(Trans('паскаль'));
Writeln(Trans('ява'));
end.
int main(void)
{
/* Переменная для хранения числа */
double chislo;
/* Сообщение с запросом для пользователя */
printf("Введите ваше число: ");
/* Считывание числа в определенном формате в определенное место */
scanf("%f", &chislo);
/* Проверяем, является ли число большем нуля (положительным)*/
if (chislo > 0) {
/* Если да, то прибавляем единицу (операция инкремент) */
chislo++;
}
else {
/* Если число отрицательное, то вычитаем из числа двойку */
chislo -= 2;
}
/* Выводим результата */
printf("Результата: %f", chislo);
return NULL;
}