# Topic 1

Average score

## Input: two lines

The first line is the number of fractions n

The second line is the N fractions separated by spaces

## Output:

Average score after removing the highest and lowest scores

```
#include
float buf[1001];
void fun(int n){
for(int i=0;i
```

# Topic 2

## password

## Input: one line

The first line: 26 lowercase letters separated by spaces, such as B a c e u F G H I J K L M n o p q R S T V W x y z d….. V Y Z R S Q

Second line: a string (uppercase) For example: buptz

## Output:

Replace B with the second letter of the first line, u with the 21st, P with the (‘a ‘-‘p’ + 1)

```
#include
char buf1[101];
char buf2[101];
int main(){
char c;
while(scanf("%c",&c)!=EOF){
int j=1;
if(c=='\n')scanf("%c",&c);// C will read this symbol at the end of the last big loop
while(c!='\n'){
if(c>='a'&&c<='z'&&j<=26)buf1[j++]=c;
scanf("%c",&c);
}
scanf("%s",buf2);
for(int i=0;buf2[i]!=0;i++){
int t=buf2[i]-'A'+1;
buf2[i]=buf1[t];
}
printf("%s\n",buf2);
}
return 0;
}
```

# Topic 3

sort

## Input: four lines

First line: number N1 (2 3 4 5 6)

The second line: the number of N1, in ascending order (sequence a)

The third line: number N2 (4 5 6 8 9)

The fourth line: the number of N2, in ascending order (sequence b)

## Output: N2 line

2

3

4

5

5

The i-th line is the number of numbers in a that are less than the i-th number of B

```
#include
int a[1001];
int b[1001];
int main(){
int n1,n2;
while(scanf("%d",&n1)!=EOF){
for(int i=0;i
```

# Topic 4

In Huffman coding Average code length = code length × Probability of codeword occurrence

For example, the occurrence times of ABCDE five characters are 50 20 5 10 15 respectively

Then, the Huffman code is a: 0 B:10 C:1110 D:1111 E:110

The average code length of the Huffman code = (50 * 1 + 20 * 2 + 5 * 4 + 10 * 4 + 15 * 3) / 100 = 1.95

## input

First line: number of characters n

The second line: n numbers separated by spaces, indicating the number of occurrences of each character in the n characters

## output

## sample input

```
5
50 20 5 10 15
```

## sample output

1.95

Idea 1

```
#include
#include
using namespace std;
int main(){
int n;
while(scanf("%d",&n)!=EOF){
priority_queue,greater > Q;
double sum=0;
for(int i=0;i
```

Train of thought 2

```
#include
#include
using namespace std;
struct node{
int h;
bool operator < (const node &a) const {
return h>a.h;
}
};
int main(){
int n;
while(scanf("%d",&n)!=EOF){
priority_queue Q;
double sum=0;
for(int i=0;i
```