カップブルーブリッジグループB @java基本的な訓練(30)BASIC-020:読み取り値の数、キーワード:機能判定する
参考リンク:
https://blog.csdn.net/ITmincherry/article/details/105315333
https://blog.csdn.net/qq_42286193/article/details/105081870
問題の説明
やんちゃな生徒は、一つのことは、彼はかなり頭痛作られ、遺伝子上の大学院コースを教えることです。数十台のペアの何千ものが染色体上に存在し、それらは何百万人に0から番号が付けられ、数千万、または十億。
例えば、時の位置番号1234567009の塩基程度の学生が、光ルックスの数字を正確に読み出すことは困難です。
だから、彼は必死にシステムを必要とし、彼は1234567009時間に入ったときに、法律を読んで対応する与える:
1234567009
ピンインとして表さ
市のER YIさん銭SI BAI呉市劉チーワン銭玲の柔術を
、彼はそれだけで輝いて読み取る必要があるので。
数字の文字列を考えると、あなたが読んで格子オープンスペースと隣接する2つの音節の規範と中国語ピンイン文字列に従ってを書くに彼を助ける:あなたの仕事は、彼がこのようなシステムを設計支援することです。
注意「「Yiは玲市WAN」の代わりに「市リンYIのWAN YI」として読み取られるような「10010」などの仕様に厳密に従っ、でなければなりません 100000」 の代わりに「WAN市」「市YI WAN」が読み出され、「2000 」 リード「えー銭」の代わりに「梁銭」など。
入力フォーマットは、
数字のシーケンスではなく、より2,000,000,000以下の数値的な大きさを有しています。
出力フォーマットは、
小文字、スペースやコンマ組成の列は、英語の読みの数を表しています。
サンプル入力
1234567009
サンプル出力
市のERイ・サン銭SI BAI呉市劉チー銭玲柔術のWAN
コード:
import java.util.Scanner;
public class BASIC020数的读法 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String[] shuzhi = { "ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu" };
String[] danwei = { "", "", "shi", "bai", "qian", "wan", "shi", "bai", "qian", "yi", "shi" };
String str = s.next();
s.close();
int n = str.length();
for (int i = 0; i < n; i++) {
int j = str.charAt(i) - '0';
if (j == 0) {
if ((n - i) == 5 || (n - i) == 9){
System.out.printf("%s ", danwei[n - i]);
}
if ((n - i) != 1 && str.charAt(i + 1) != '0'){
System.out.printf("%s ", "ling");
}
} else if ((n == 2 || n == 6 || n == 10) && j == 1 && i == 0){
System.out.printf("%s ", "shi");
}
else{
System.out.printf("%s %s ", shuzhi[j], danwei[n - i]);
}
}
}
}