Определить делится ли длинное число на 1559 - QBasic
Формулировка задачи:
Дано число - это запись без пробелов всех натуральных
чисел от 1 до 294. Или 123456789101112 ... 291292293294
Надо определить: делится ли это число на 1559?
(да, делится)
Листинг программы
- REM
- REM 123456789101112 .... 294
- REM
- REM 1559
- REM
- DECLARE FUNCTION M! (n!)
- DECLARE FUNCTION Ss$ (n!)
- CLS
- DIM SHARED ns AS STRING
- FOR i = 1 TO 294
- ns = ns + Ss(i)
- NEXT
- n = 1559
- n2 = 1
- FOR i = 2 TO LEN(ns)
- n2 = 10 * n2 + M(i)
- n2 = n2 MOD n
- NEXT i
- IF n2 = 0 THEN PRINT "YES" ELSE PRINT "NO"
- END
- FUNCTION M (n)
- M = VAL(MID$(ns, n, 1))
- END FUNCTION
- FUNCTION Ss$ (n)
- Ss = LTRIM$(STR$(n))
- END FUNCTION
Решение задачи: «Определить делится ли длинное число на 1559»
textual
Листинг программы
- DIM i AS LONG, s AS LONG, n AS LONG
- n = 1559
- FOR i = 1 TO 294
- s = (s * 10 ^ INT(LOG(i) / LOG(10) + 1) + i) MOD n
- NEXT i
- IF s THEN PRINT "No" ELSE PRINT "Yes"
Объяснение кода листинга программы
- Задаем три переменные: i, s, n.
- Переменная n равна 1559.
- Делаем цикл от 1 до 294.
- Внутри цикла умножаем s на 10 в степени натурального логарифма числа i (с округлением до ближайшего целого числа) и добавляем к этому произведению само число i, взятое модулем n.
- Если результат (s) делится на n без остатка, то выводим
No
, иначе выводимYes
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д