program simple_hash
implicit none
! 入力データ用の変数定義
character(len=9) :: student_id = "202301107"
character(len=12) :: student_name = "飯村翔哉" ! UTF-8環境を想定(3バイト×4文字)
! ハッシュ計算用の変数(大きな数を取り扱えるよう4バイト整数を指定)
integer(4) :: hash_value
integer :: i
! 初期ハッシュ値(任意のプライム数)
hash_value = 5381
! 1. 学籍番号のハッシュ計算(ループ処理)
do i = 1, len(student_id)
! hash_value = hash_value * 33 + char_code
hash_value = hash_value * 33 + ichar(student_id(i:i))
end do
! 2. 氏名のハッシュ計算(ループ処理)
do i = 1, len(student_name)
hash_value = hash_value * 33 + ichar(student_name(i:i))
end do
! 結果の出力(負の数になるのを防ぐため、絶対値にするか、またはそのまま出力)
print *, "--- Hash Result ---"
print *, "Input ID : ", student_id
print *, "Input Name: ", student_name
print *, "Hash Value: ", abs(hash_value)
print *, "-------------------"
end program simple_hash
cHJvZ3JhbSBzaW1wbGVfaGFzaAogICAgaW1wbGljaXQgbm9uZQogICAgCiAgICAhIOWFpeWKm+ODh+ODvOOCv+eUqOOBruWkieaVsOWumue+qQogICAgY2hhcmFjdGVyKGxlbj05KSA6OiBzdHVkZW50X2lkID0gIjIwMjMwMTEwNyIKICAgIGNoYXJhY3RlcihsZW49MTIpIDo6IHN0dWRlbnRfbmFtZSA9ICLpo6/mnZHnv5Tlk4kiICEgVVRGLTjnkrDlooPjgpLmg7PlrprvvIgz44OQ44Kk44OIw5c05paH5a2X77yJCiAgICAKICAgICEg44OP44OD44K344Ol6KiI566X55So44Gu5aSJ5pWw77yI5aSn44GN44Gq5pWw44KS5Y+W44KK5omx44GI44KL44KI44GGNOODkOOCpOODiOaVtOaVsOOCkuaMh+Wumu+8iQogICAgaW50ZWdlcig0KSA6OiBoYXNoX3ZhbHVlCiAgICBpbnRlZ2VyIDo6IGkKICAgIAogICAgISDliJ3mnJ/jg4/jg4Pjgrfjg6XlgKTvvIjku7vmhI/jga7jg5fjg6njgqTjg6DmlbDvvIkKICAgIGhhc2hfdmFsdWUgPSA1MzgxCiAgICAKICAgICEgMS4g5a2m57GN55Wq5Y+344Gu44OP44OD44K344Ol6KiI566X77yI44Or44O844OX5Yem55CG77yJCiAgICBkbyBpID0gMSwgbGVuKHN0dWRlbnRfaWQpCiAgICAgICAgISBoYXNoX3ZhbHVlID0gaGFzaF92YWx1ZSAqIDMzICsgY2hhcl9jb2RlCiAgICAgICAgaGFzaF92YWx1ZSA9IGhhc2hfdmFsdWUgKiAzMyArIGljaGFyKHN0dWRlbnRfaWQoaTppKSkKICAgIGVuZCBkbwogICAgCiAgICAhIDIuIOawj+WQjeOBruODj+ODg+OCt+ODpeioiOeul++8iOODq+ODvOODl+WHpueQhu+8iQogICAgZG8gaSA9IDEsIGxlbihzdHVkZW50X25hbWUpCiAgICAgICAgaGFzaF92YWx1ZSA9IGhhc2hfdmFsdWUgKiAzMyArIGljaGFyKHN0dWRlbnRfbmFtZShpOmkpKQogICAgZW5kIGRvCiAgICAKICAgICEg57WQ5p6c44Gu5Ye65Yqb77yI6LKg44Gu5pWw44Gr44Gq44KL44Gu44KS6Ziy44GQ44Gf44KB44CB57W25a++5YCk44Gr44GZ44KL44GL44CB44G+44Gf44Gv44Gd44Gu44G+44G+5Ye65Yqb77yJCiAgICBwcmludCAqLCAiLS0tIEhhc2ggUmVzdWx0IC0tLSIKICAgIHByaW50ICosICJJbnB1dCBJRCAgOiAiLCBzdHVkZW50X2lkCiAgICBwcmludCAqLCAiSW5wdXQgTmFtZTogIiwgc3R1ZGVudF9uYW1lCiAgICBwcmludCAqLCAiSGFzaCBWYWx1ZTogIiwgYWJzKGhhc2hfdmFsdWUpCiAgICBwcmludCAqLCAiLS0tLS0tLS0tLS0tLS0tLS0tLSIKCmVuZCBwcm9ncmFtIHNpbXBsZV9oYXNo