暗号発生器


暗号発生器
銀行口座などの重要な権限にパスワードを設定するとき、誕生日を覚えやすくするためには、
解読されやすく、安全ではありません.覚えにくいパスワードを設定すると、自分も忘れてしまうのではないかと心配します.紙に書いてあると、紙が他の人に発見されたり、なくしたりするのではないかと心配です...
このプログラムの任務は、ピンインの文字列を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();
		}
	}
}