---
# System prepended metadata

title: UVA 10008 - What's Cryptanalysis
tags: [UVA]

---

UVA 10008 - What's Cryptanalysis

題目:

密碼翻譯（cryptanalysis）是指把某個人寫的密文（cryptographic writing）加以分解。這個程序通常會對密文訊息做統計分析。你的任務就是寫一個程式來對密文作簡單的分析。

Input
輸入的第1列有一個正整數n，代表以下有多少列需要作分析的密文。 接下來的n列，每列含有0或多個字元（可能包含空白字元）

Output
每列包含一個大寫字元（A~Z）和一個正整數。這個正整數代表該字元在輸入中出現的次數。輸入中大小寫（例如：A及a）視為相同的字元。輸出時請按照字元出現的次數由大到小排列，如果有2個以上的字元出現次數相同的話，則按照字元的大小（例如：A在H之前）由小到大排列。 請注意：如果某一字元未出現在輸入中，那他也不應出現在輸出中。

Sample Input #1
3
This is a test.
Count me 1 2 3 4 5.
Wow!!!! Is this question easy?

Sample Output #1
S 7
T 6
I 5
E 4
O 3
A 2
H 2
N 2
U 2
W 2
C 1
M 1
Q 1
Y 1

C++ code:

```c++=
#include <bits/stdc++.h>

using namespace std;
 
int main () {
	//ios::sync_with_stdio(0); cin.tie(0);
	int n, len = 0;
	int count[100] = {0};

	cin >> n;
	cin.ignore();

	while (n--) {

		string s;
		getline(cin, s);
		for (int i = 0; i < s.length(); ++i) {
			if (s[i] >= 'a' && s[i] <= 'z' || s[i] >= 'A' && s[i] <= 'Z') {
				len++;
				count[toupper(s[i])]++;
			}
		}

	}
	
	for (int j = len; j >= 1; --j) {
		for (char i = 'A'; i <= 'Z'; ++i) {
			if (count[i] == j) {
				cout << i << " " << count[i] << endl;
			}
		}
	}
}
```