UVA 10924 Prime Words 題解
Prime Words
A prime number is a number that has only two divisors: itself and the number one. Examples of prime
numbers are: 1, 2, 3, 5, 17, 101 and 10007.
In this problem you should read a set of words, each word is composed only by letters in the range
a-z and A-Z. Each letter has a specic value, the letter a is worth 1, letter b is worth 2 and so on until
letter z that is worth 26. In the same way, letter A is worth 27, letter B is worth 28 and letter Z is worth
52.
You should write a program to determine if a word is a prime word or not. A word is a prime word
if the sum of its letters is a prime number.
Input
The input consists of a set of words. Each word is in a line by itself and has L letters, where 1 L 20.
The input is terminated by enf of le (EOF).
Output
For each word you should print: `It is a prime word.', if the sum of the letters of the word is a
prime number, otherwise you should print: `It is not a prime word.'.
Sample Input
UFRN
contest
AcM
Sample Output
It is a prime word.
It is not a prime word.
It is not a prime word.
題意:給定一個串,在a~z對應1~26,A~Z對應1+26~26+26的情況下計算這個串的數值,如果這個數值是素數,輸出“It is a prime word.”否則輸出“It is not a prime word.”。
分析:水題,直接上程式碼。
#include<bits/stdc++.h> using namespace std; map<char,int> book; bool u[100005]; void ass() { memset(u,true,sizeof(u)); for(int i=2;i<=100005;i++) { if(u[i]) { for(int j=2;j<=100005;j++) { if(j*i>100005) break; u[j*i]=false; } } } } void pre() { for(char ch='a';ch<='z';ch++) { book[ch]=ch-'a'+1; } for(char ch='A';ch<='Z';ch++) { book[ch]=ch-'A'+1+26; } } int main() { //freopen("input.txt","r",stdin); pre(); ass(); char s[25]; while(~scanf("%s",s)) { int len=strlen(s); int tmp=0; for(int i=0;i<len;i++) { tmp+=book[s[i]]; } if(u[tmp]) printf("It is a prime word.\n"); else printf("It is not a prime word.\n"); } return 0; }
&n