コミュニティアイコン プチコン 非公式コミュニティ プレイ日記

アバター
こういち ◆ou0jbJnEJ0Kb
2025/5/15 20:23
ACLS
OPTION DEFINT
OPTION STRICT
XSCREEN 1

VAR N%,I%,J%
VAR A%,B%
INPUT N%
IF N%<=21 THEN
 I%=N%:J%=3818:A%=1
 WHILE I%
  IF I% AND 1 THEN A%=A%*J% MOD 32749
  J%=J%*J% MOD 32749
  I%=I%>>1
 WEND
 I%=N%:J%=28932:B%=1
 WHILE I%
  IF I% AND 1 THEN B%=B%*J% MOD 32749
  J%=J%*J% MOD 32749
  I%=I%>>1
 WEND
 IF A%+B%>=32749 THEN
  PRINT A%+B%-32749
 ELSE
  PRINT A%+B%
 ENDIF
 'PRINT ((A%-B%+32749) MOD 32749)*1527 MOD 32749
ENDIF
END

コメント

アバター
こういち 2025/5/15 22:43 ◆ou0jbJnEJ0Kb
これを思い出した。(普通に一般項です)
https://twitter.com:443/Keyneqq/status/1915325842294792565
アバター
こういち 1日前 ◆ou0jbJnEJ0Kb
見ただけだと一切分からないプログラムなので、解説するか。
まず、7635*7635 MOD 32749は5になります。
つまり、7635はMOD 32749上で5の平方根となります。
ついでに、-7635=32749-7635である25114も同じく5の平方根となります。

これは、1〜32748について、2乗して32749で割った余りが5かどうかを1つづつ調べて見つけました。(もう少し効率的な方法はある)
アバター
こういち 1日前 ◆ou0jbJnEJ0Kb
16375*2 MOD 32749は1になります。
つまり、156375はMOD 32749上で2の逆数です。
これは簡単で、MOD 32749上で1と1+32749は等しい数として扱われるので、1/2=(1+32749)/2となります。

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -