Опитвам се да напиша програма, която прави следното:
В тази програма отпечатваме i**q % p
букви от азбуката на ред i
, например, ако q=2
и p=12
, тогава искаме да отпечатаме:
1**2 % 12 = 1
2**2 % 12 = 4
3**2 % 12 = 9
4**2 % 12 = 4
5**2 % 12 = 1
... така че първите пет реда на изхода ще бъдат:
a
bcde
fghijklmn
opqr
s
В моя случай функцията за определяне на броя знаци е (i**2)%9
, но идеята е същата. Конкретната задача е следната:
„Отпечатайте 1834
реда, като използвате буквите a-z в последователност, така че номерът на ред i ще използва (i**2 ) % 9
букви. Първата буква, използвана за отпечатване на ред 1834
е: _________
“
Започнах да кодирам и имам два основни въпроса. Първо, как да накарам азбуката да започне отначало, след като достигна "z" (или по-вероятно "25-то място")?
Също така, какво трябва да направя за програмата? Досега имам:
letters="abcdefghijklmnopqrstuvwxyz"
for i in range[1,1834]:
x=((i**2)%9)
print(letters[])
...но не знам как да продължа. Щях да опитам метод на парче, но не знам. Всеки принос ще бъде оценен.
pow(x, y, z)
е еквивалентен на(x**y)%z
, но по-бърз (особено акоx**y
е много голям). - person nneonneo   schedule 15.10.2012