暗号発生器
1670 ワード
暗号発生器
銀行口座などの重要な権限にパスワードを設定するとき、誕生日を覚えやすくするためには、
解読されやすく、安全ではありません.覚えにくいパスワードを設定すると、自分も忘れてしまうのではないかと心配します.紙に書いてあると、紙が他の人に発見されたり、なくしたりするのではないかと心配です...
このプログラムの任務は、ピンインの文字列を6桁の数字(パスワード)に変換することです.
私たちはどんな覚えやすいピンイン列(例えば名前、王喜明、書く:wangximing)を入力として使用することができて、プログラムは6桁の数字を出力します.
変換の手順は次のとおりです.
第一歩文字列の6つのグループを折りたたみます.例えばwangximingは次のようになります.
wangxi
ming
第二歩同じ位置に垂直なすべての文字のasciiコード値を加算し、上記の例のように6つの数字を得ます.
228 202 220 206 120 105
第三歩さらに各数字を「縮める」処理:各ビットの数字を加算し、得られた数字が1桁の数字でなければ、
数字になるまで縮めます.例えば、228=>2+2+8=12=>1+2=3
上の数字は縮小して:344836になって、これはプログラムの最終的な出力結果です!
要求プログラムは標準入力からデータを受信し,標準出力に結果を出力する.
入力フォーマットは、最初の行は整数n(<100)であり、下に入力行がどれだけあるかを示し、次にn行の文字列、すなわち変換待ちの文字列である.
出力フォーマットは、n行変換後の6ビットパスワードです.
たとえば、次のように入力します.
5
zhangfeng
wangximing
jiujingfazi
woaibeijingtiananmen
haohaoxuexi
出力:
772243
344836
297332
716652
875843
銀行口座などの重要な権限にパスワードを設定するとき、誕生日を覚えやすくするためには、
解読されやすく、安全ではありません.覚えにくいパスワードを設定すると、自分も忘れてしまうのではないかと心配します.紙に書いてあると、紙が他の人に発見されたり、なくしたりするのではないかと心配です...
このプログラムの任務は、ピンインの文字列を6桁の数字(パスワード)に変換することです.
私たちはどんな覚えやすいピンイン列(例えば名前、王喜明、書く:wangximing)を入力として使用することができて、プログラムは6桁の数字を出力します.
変換の手順は次のとおりです.
第一歩文字列の6つのグループを折りたたみます.例えばwangximingは次のようになります.
wangxi
ming
第二歩同じ位置に垂直なすべての文字のasciiコード値を加算し、上記の例のように6つの数字を得ます.
228 202 220 206 120 105
第三歩さらに各数字を「縮める」処理:各ビットの数字を加算し、得られた数字が1桁の数字でなければ、
数字になるまで縮めます.例えば、228=>2+2+8=12=>1+2=3
上の数字は縮小して:344836になって、これはプログラムの最終的な出力結果です!
要求プログラムは標準入力からデータを受信し,標準出力に結果を出力する.
入力フォーマットは、最初の行は整数n(<100)であり、下に入力行がどれだけあるかを示し、次にn行の文字列、すなわち変換待ちの文字列である.
出力フォーマットは、n行変換後の6ビットパスワードです.
たとえば、次のように入力します.
5
zhangfeng
wangximing
jiujingfazi
woaibeijingtiananmen
haohaoxuexi
出力:
772243
344836
297332
716652
875843
package marslin;
import java.util.Scanner;
public class 19 {
public static int simplify(int n) {
String s;
while (n>=10) {
s=n+"";
n=0;
for (int i = 0; i < s.length(); i++) {
n+=s.charAt(i)-'0';
}
}
return n;
}
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
String s;
scanner.nextLine();
while((n--)>0){
int array[]=new int[6];
s=scanner.nextLine();
for (int i = 0; i < s.length(); i++) {
array[i%6]+=(int)(s.charAt(i));
}
for (int i = 0; i < 6; i++) {
System.out.print(simplify(array[i]));
}
System.out.println();
}
}
}