0 / 0 / 0
Регистрация: 13.03.2025
Сообщений: 25

Единичный НОД

17.11.2025, 13:19. Показов 920. Ответов 11

Студворк — интернет-сервис помощи студентам
Заданы два натуральных числа в десятичной системе счисления, состоящие из единиц. В первом числе ровно N единиц, а во втором их ровно M. Требуется найти НОД этих чисел.

Напомним, что НОД (наибольший общий делитель) двух чисел a и b — это такое максимальное число c, что b делится на c и a делится на c.

числа N и M (1 ≤ N, M ≤ 2000).

вроде как понял как написать однако слишком уж большие числа нужны (N и M (1 ≤ N, M ≤ 2000))

Pascal
1
2
3
4
5
6
7
8
### Uses School;
var (a,b):=RI2;
var s,m:string;
loop a do
   s:=s+'1'; 
loop b do
  m:=m+'1';
  НОД(strtoint64(s),strtoint64(m)).Print
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.11.2025, 13:19
Ответы с готовыми решениями:

Найти НОД трёх чисел. Примечание. НОД(a,b,c)=НОД(НОД(a,b),c).
Кто может решить данную задачку (составить программу с помощью циклов)))) заранее спасибо)) Найти...

Найти наибольший общий делитель чисел M и N. Используйте теорему Эйлера: Если M делится на N, то НОД (N, M)=N, иначе НОД (N, M)= =НОД (M mod N, N).
Найти наибольший общий делитель чисел M и N. Используйте теорему Эйлера: Если M делится на N, то...

Даны n натуральных чисел. Найти их наибольший общий делитель, учитывая что НОД(а,б,с)=НОД(НОД(а,б)с)
даны n натуральных чисел. Найти их наибольший общий делитель, учитывая, что НОД(a,b,c) = НОД...

11
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33372 / 21498 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
17.11.2025, 15:35
Насколько я помню, если числа состоят из m и n единиц, то для нахождения их НОДа тебе достаточно найти НОД m и n.
0
 Аватар для agvego5
47 / 38 / 10
Регистрация: 18.09.2023
Сообщений: 254
17.11.2025, 17:22
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
## 
 
var a:='11111111';
var b:='1111';
 
var n:=a.Length;//N единиц
var m:=b.Length;//M единиц
 
Println(n,m);//8 4
Println(GCD(n,m));//4
 
Println(a.ToInteger,b.ToInteger);//11111111 1111
Println(GCD(a.ToInteger,b.ToInteger));//1111
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33372 / 21498 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
17.11.2025, 18:17
Pascal
1
Println('1'*GCD(n,m));
Так не работает в PABC.Net? У меня просто не установлен он...
0
Модератор
10406 / 5693 / 3400
Регистрация: 17.08.2012
Сообщений: 17,340
17.11.2025, 19:44
Без проверки корректноти ввода.

Если "в лоб", то так:
Pascal
1
2
3
## 
  uses School;
  Println('1'*GCD(ReadInteger.ToString.Length, ReadInteger.ToString.Length))
0
 Аватар для agvego5
47 / 38 / 10
Регистрация: 18.09.2023
Сообщений: 254
18.11.2025, 08:21
Цитата Сообщение от volvo Посмотреть сообщение
Println('1'*GCD(n,m)); работает в PABC.Net
конечно работает. только про умножение не было упомянуто. возможно по умолчанию.
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
uses School;
в данной программе он не нужен. (GCD)
это для ТС нужен потому что там НОД - но тогда у него букв больше)
0
Модератор
10406 / 5693 / 3400
Регистрация: 17.08.2012
Сообщений: 17,340
18.11.2025, 08:44
Ну, кому-то нужен, кому-то не нужен. У меня Pascal ABC.NET версия 3.8.3 (потому что Windows XP), и в нём функция GCD размещена в модуле School.
0
 Аватар для agvego5
47 / 38 / 10
Регистрация: 18.09.2023
Сообщений: 254
18.11.2025, 18:53
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Pascal ABC.NET версия 3.8.3 (потому что Windows XP)
последняя версия на сайте PascalABC.NET для Windows XP (Setup, 27 Mb) версия 3.10
больше она обновляться не планируется - как я понял это связано с DotNet40
0
Модератор
10406 / 5693 / 3400
Регистрация: 17.08.2012
Сообщений: 17,340
18.11.2025, 22:50
Ну, видел и знаю, естественно. Не помню, почему у меня не установилась 3.10, вроде бы из-за невозможности установить нужную версию .NET Framework. Вернее, установилось, но работать отказалось, а бубен доставать мне было лень. Да и вообще, 3.8.3, 3.10... Для меня нет особенной разницы. Я использую Pascal ABC.NET только для киберфорума.
0
0 / 0 / 0
Регистрация: 13.03.2025
Сообщений: 25
01.12.2025, 13:26  [ТС]
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Println('1'*GCD(ReadInteger.ToString.Len gth, ReadInteger.ToString.Length))
прикольно но не работает, он же длину цифры берет а нужно чтобы взял длину ДЛЯ строки из единиц т.е. как тут например
Pascal
1
2
3
4
5
6
7
### Uses School;
var (a,b):=RI2;
var s,m:string;
loop a do
   s:=s+'1'; 
loop b do
  m:=m+'1';
а в твоем коде при вводе от 1 до 9, в любом случае выводит единицу т.к. считает наименьший делитель чисел(1,1) потому что их длина=1, нужно чтобы эти вводные числа были длинами строк как раз, а не из них длину вычислять
0
Модератор
10406 / 5693 / 3400
Регистрация: 17.08.2012
Сообщений: 17,340
01.12.2025, 14:16
Цитата Сообщение от ohio Посмотреть сообщение
а в твоем коде при вводе от 1 до 9, в любом случае выводит единицу
??? И что ТЕБЕ не так? Прочитай, что ТЫ лично в сообщении #1 написал:
Цитата Сообщение от ohio Посмотреть сообщение
Заданы два натуральных числа в десятичной системе счисления, состоящие из единиц
То есть, по заданию, в числах не должно быть никаких других цифр, кроме "1". Зачем ТЫ вводишь какие-то там другие цифры, я не постигаю. Своё собственное задание, что ли, не читал?
Цитата Сообщение от ohio Посмотреть сообщение
нужно чтобы эти вводные числа были длинами строк как раз, а не из них длину вычислять
А где ТЫ ранее писал, что должно быть так? А теперь вот выдвигаешь мне претензии относительно того, что я знать просто не мог? У ТЕБЯ всегда так? Ну чо, здорово.

С числами из "1" моя программа работает согласно задания, а остального эта программа делать не обязана.

Вот ТЕБЕ программа с вводом длин чисел (кстати, вычислять сами числа совершенно не требуется):
Pascal
1
2
3
## 
  uses School;
  Println('1'*GCD(ReadInteger, ReadInteger))
Если ТЫ вдруг решишь, что нужно выводить длину НОД, а не сам НОД, тогда так:
Pascal
1
2
3
## 
  uses School;
  Println(GCD(ReadInteger, ReadInteger))
0
Вирусоборец
 Аватар для thyrex
14439 / 7481 / 1579
Регистрация: 06.09.2009
Сообщений: 27,119
04.01.2026, 12:22
ohio, эта задача на acmp имеет сложность 23%, а значит решается довольно просто. Что именно нужно использовать, подсказано еще во втором сообщении этой темы. А дальше были предложены варианты решения. Вместо того, чтобы прочесть внимательно написанное, Вы уперлись в реализацию именно своего варианта, да еще и претензии предъявляете. Ну тогда Вам прямая дорога в реализацию длинной арифметики (задачи на базовые операции с длинной арифметикой тоже имеются на acmp), ибо strtoint64 не прокатит для строк такой длины.

Вот Вам еще пара вариантов. Оба проходят проверку на acmp, правда первый потребляет больше памяти.

Pascal
1
2
3
4
5
6
7
8
###
Uses School;
var (a,b):= RI2;
var g:= НОД(a, b);
var s:string;
loop g do
   s:= s + '1'; 
s.Print;
Pascal
1
2
3
###
var (a,b):= RI2;
Println('1'*GCD(a, b));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.01.2026, 12:22
Помогаю со студенческими работами здесь

Единичный НОД
Даны 2 числа, состоящие из N и M единиц (1<=N,M<=2000). Найти их НОД. Пример:6 3 Вывод:1001

Единичный НОД
Заданы два натуральных числа в десятичной системе счисления, состоящие из единиц. В первом числе...

Единичный НОД
Заданы два натуральных числа в десятичной системе счисления, состоящие из единиц. В первом числе...

Даны натуральные числа m, n. Вычислить наибольший общий делитель чисел m, n (НОД), используя рекурсивную функцию вычисления НОД.
Даны натуральные числа m, n. Вычислить наибольший общий делитель чисел m, n (НОД), используя...

Найти НОД трёх чисел, используя рекурсивную функцию нахождения НОД двух чисел
Помогите решить. 8. Найти НОД трёх чисел, используя рекурсивную функцию нахождения НОД двух...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru