アフィン暗号についてのメモ
アフィン暗号の復号化についての情報が、検索してもすぐには見つけられなかったのでメモ。
アフィン暗号は文字 r を2つのキー a,b を用い、E(r)=(a*r+b)%N 式により暗号化、D(r)=((r-b+N*k)/a)%N 式により復号化する方法(Nは文字種数、k は(r-b+N*k)0 (mod a) を満たす正整数で、a,bは互いに素である必要がある)。
以下は小文字('a'~'z')のみを暗号・復号化する場合の実装例:
const static int N = 26; // アフィン暗号化 char encode(const char r, const int a, const int b) { if (islower(r)) { return ((a*(r-'a') + b) % N) + 'a'; } else { return r; } } // アフィン復号化 char decode(const char r, const int a, const int b) { if (islower(r)) { int t = (r-'a') - b; while (t%a != 0) { t += N; } return (t/a) % N + 'a'; } else { return r; } }
SRM444 DIV2
217.81/250
383.99/500
0/1000
Challenges: 1/1
Total: 651.80
Room rank: 1
Division rank: 7
Rating: 871 -> 1064
Division rank 7位は過去最高。250,500の両問題とも解法はすぐに思いついたが、コーディングの仕方が少し非効率だった。緑に戻れた。
右手でのハーフシャワーができるようになった
3日ほど前から、ボールジャグリングを1日30分弱行っている。基本といえるカスケードは完璧にできるようになったが、その後、なかなか上達しないままだった。
今度は、このページを参考にしながら、地道に簡単な技からできるようにしようということで、ハーフシャワーに習得に取り組んできた。
書かれている通りにオーバーザトップの練習からはじめた。最初は当然、勝手がわからず、ボールを落としてばかりで、習得に時間がかかるかと思った。だけど、予想に反して1日でオーバーザトップのコツとつかみ、2日でハーフシャワーを行うことができた。
まだ、安定してできるとは言いがたいので、もう少し練習を続ける。それと、次のリバースカスケードに進むには、左手でもハーフシャワーをできるようにする必要があるようなので、それもやる。
久しぶりに風邪をひいた
昨日の午後あたりから鼻水が水っぽい。風邪をひいたらしい。前回にいつひいたのかは覚えていないが、だいぶ前で、半年ぐらい前だと思う。
大学に入学した当初は3カ月に1回ぐらいはひいていたが、生活のバランスを良くしたら、ひきにくくなった。
今回、風邪をひいた主な要因は寝不足だと思う。
まあ、対して症状はひどくないので、普段通りに行動している。
研究室の机の上を簡単に整理した
先週はシンポジウムに参加するために広島に行って来た。数々の研究発表等を聴いて、思うことがあるが、まだ考えが整理できていない。
考えを整理する前に、乱雑な机の上を整理した。2月末までに出す必要があった論文を書くために、資料を置いていったらいつの間にか汚くなっていた。いつか整理しなければと思いながら、そのまま約2カ月間ほど放置していた。そして、先日、「精神が安定しないのは部屋が汚いからだ」というようなことを何かで読んで、そう言われてみればそうだなと思い、ようやく整理する気分になった。
今日の整理作業は、紙の資料をいらないものといるものに分けて、いらないのを捨てただけだ。なので、いる資料内での整理はできていないので、近いうちにもう一度整理する。