uva 10785 - The Mad Numerologist

时间:2014-08-21 21:20:25   收藏:0   阅读:389

题目

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.

bubuko.com,布布扣

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".

bubuko.com,布布扣

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.

Input 

First line of the input file contains an integer N ( 0 < Nbubuko.com,布布扣250) 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.

Sample Input 

3
1
5
5

Sample Output 

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


思路

    字母量小,用硬编码制定移动路径,在排序上如果是C语言可用Qsort,当然这里自己编写计数排序效率更好.

解答

#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

原文:http://my.oschina.net/u/572632/blog/305318

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!