# 题目

Numerology is a science that is used by many people to find out a mans personality, sole purpose of life, desires to experience etc. Some calculations of numerology are very complex, while others are quite simple. You can sit alone at home and do these easy calculations without taking any ones help. However in this problem you wont be asked to find the value of your name.

To find the value of a name modern numerologists have assigned values to all the letters of English Alphabet. The table on the left shows the numerical values of all letters of English alphabets. Five letters A, E, I, O, U are vowels. Rests of the letters are consonant. In this table all letters in column 1 have value 1, all letters in column 2 have value 2 and so on. So T has value 2, F has value 6, R has value 9, O has value 6 etc. When calculating the value of a particular name the consonants and vowels are calculated separately. The following picture explains this method using the name ``CHRISTOPHER RORY PAGE".

So you can see that to find the consonant value, the values of individual consonants are added and to find the vowel value the values of individual vowels are added. A mad Numerologist suggests people many strange lucky names. He follows the rules stated below while giving lucky names.

• The name has a predefined length N.
• The vowel value and consonant value of the name must be kept minimum.
• To make the pronunciation of the name possible vowels and consonants are placed in alternate positions. Actually vowels are put in odd positions and consonants are put in even positions. The leftmost letter of a name has position 1; the position right to it is position 2 and so on.
• No consonants can be used in a name more than five times and no vowels can be used in a name more than twenty-one times
• Following the rules and limitations above the name must be kept lexicographically smallest. Please note that the numerologists first priority is to keep the vowel and consonant value minimum and then to make the name lexicographically smallest.

## Input

First line of the input file contains an integer N ( 0 < N250) that indicates how many sets of inputs are there. Each of the next N lines contains a single set of input. The description of each set is given below: Each line contains an integer n ( 0 < n < 211) that indicates the predefined length of the name.

## Output

For each set of input produce one line of output. This line contains the serial of output followed by the name that the numerologist would suggest following the rules above. All letters in the output should be uppercase English letters.

```3
1
5
5```

## Sample Output

```Case 1: A
Case 2: AJAJA
Case 3: AJAJA```

# 解答

```#include <iostream>
#include <cstring>
#include <string>
#include <cstring>
#include <fstream>
#include <sstream>
#include <vector>
#include <cstdlib>
#include <cstdio>
#include <map>
#include <algorithm>

using namespace std;

#ifdef DEBUG
ifstream in;
ofstream out;
#endif

#ifdef DEBUG
#define inpath      "./in.txt"
#define outpath     "./out.txt"
#define CIN     in
#define COUT    out
#else
#define CIN     cin
#define COUT    cout
#endif

/**move way*/
const char *conList  = "JSBKTCLDMVNWFXGPYHQZR";
const char *voList   =  "AUEOI";

int main()
{
#ifdef DEBUG
in.open(inpath,     ios::in);
out.open(outpath,   ios::out);
if(in.fail()){
cout << "input init fail " << "\n";
return -1;
}
if(out.fail()){
cout << "output init fail " << "\n";
return -1;
}
#endif
string ans;
string vans;
string cans;
int cases;
int len;
const char *wt[2];
CIN >> cases;
for(int currCase = 1; currCase <= cases; currCase++){
CIN >> len;
const char *vv = voList;
const char *cc = conList;
ans.clear();
vans.clear();
cans.clear();
for(int i = 1; i <= ((1 + len) >>1); i++){
vans += *vv;
if(i%21 == 0)
vv++;
}
for(int i = 1; i <= (len>>1) ; i++){
cans += *cc;
if(i%5 == 0)
cc++;
}
sort(vans.begin(), vans.end());
sort(cans.begin(), cans.end());
string::iterator viter = vans.begin();
string::iterator citer = cans.begin();
for(int lenCurr = 1; lenCurr <= len; lenCurr++){
if(lenCurr&0x1)
ans += *viter++;
else
ans += *citer++;
}
COUT << "Case " << currCase << ": " << ans << endl;
/*Case 1: A*/
}
return 0;
}```

uva 10785 - The Mad Numerologist,布布扣,bubuko.com

## 小白书练习题5.5.3 排序检索类、

UVA 340 Master-Mind Hints 题意:猜数字游戏,给n个数的序列给你.接下来一行是答案序列.剩下的都是猜测序列.对于每一个猜测序列,统计有多少个数字相同并且位置相同.有多少数字相同位置不同.每一个数字只能用一次. 思路:直接统计可以求出数字相同并且位置相同的哪一些数.在此过程中我加了一个标记数组.标记那些用过的数的位置为1,没用过为0:然后枚举猜测中哪些没用过的数字.去答案序列中找.当数字相等并且答案行中那个数也没用过时.计数加1: 1 #include<cstdio> 2

## UVA 10110 Light, more light【经典开灯问题】

Light, more light Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVA. Original ID: 10110 64-bit integer IO format: %lld      Java class name: Main Prev Submit Status Statistics Discuss Next Type: None None Graph Theory

## UVA 562 Dividing coins --01背包的变形

01背包的变形. 先算出硬币面值的总和,然后此题变成求背包容量为V=sum/2时,能装的最多的硬币,然后将剩余的面值和它相减取一个绝对值就是最小的差值. 代码: #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; #define N 50007 int c[102],d

## UVA 10341 Solve It

Problem F Solve It Input: standard input Output: standard output Time Limit: 1 second Memory Limit: 32 MB Solve the equation: p*e-x + q*sin(x) + r*cos(x) + s*tan(x) + t*x2 + u = 0 where 0 <= x <= 1. Input Input consists of multiple test cases and te

## UVA 11014 - Make a Crystal(容斥原理)

UVA 11014 - Make a Crystal 题目链接 题意:给定一个NxNxN的正方体,求出最多能选几个整数点.使得随意两点PQ不会使PQO共线. 思路:利用容斥原理,设f(k)为点(x, y, z)三点都为k的倍数的点的个数(要扣掉一个原点O).那么全部点就是f(1),之后要去除掉共线的,就是扣掉f(2), f(3), f(5)..f(n).n为素数.由于这些素数中包括了合数的情况,而且这些点必定与f(1)除去这些点以外的点共线,所以扣掉.可是扣掉后会扣掉一些反复的.比方f(6)在f

## [UVa] Palindromes(401)

UVA - 401 Palindromes Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description A regular palindrome is a string of numbers or letters that is the same forward as backward. For example, the string "ABCDED