UVA10924 【Prime Words】

题目大意(:)给你一个单词,每个单词仅由(a-z)(A-Z)范围内的字母构成。对于每个字母,赋予其一个值,(a->1,b->2……z->26,A->27,B->28……Z->52.)对于一个单词,它的价值为各个字母的值的和,若它的价值是一个素数,那么输出("It~is~a~prime~word.")否则输出("It~is~not~a~prime~word.")

按照题意模拟即可,将这(52)个字母用(map)映射成数字,对于每个单词,求出它的价值,判断是否为素数即可。

code:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <map>
#include <cmath>

using namespace std;

map<char, int>rhs; //将char映射为int

bool is_prime(int a) //判素数
{
    for (int i = 2; i <= sqrt(a); i++)
        if (a % i == 0) return false;
    return true;
}

int main()
{
    for (int i = 97; i <= 122; i++)
        rhs[char(i)] = i - 96; 
    for (int i = 65; i <= 90; i++)
        rhs[char(i)] = i - 38; //映射
    string s;
    while (cin >> s) {
        int temp = 0;
        for (int i = 0; i <= s.length(); i++)
            temp += rhs[s[i]];
        if (is_prime(temp))
            puts("It is a prime word.");
        else puts("It is not a prime word.");
    }

    return 0;
}

完结撒花(っ•̀ω•́)っ✎⁾⁾

原文地址:https://www.cnblogs.com/Hydrogen-Helium/p/11738044.html