UVa 10924-Prime Words

问题描述】

本题输入一个单词集合,每个单词由a-z和A-Z的字母组成。每个字母对应一个特殊的值,字母a对应1,字母b对应2,以此类推,字母z对应26;同样,字母A对应27,字母B对应28,字母Z对应52。

已个单词的字母总和是素数,则这个单词是素单词,请编写程序,判定一个单词是否为素单词。

输入:

输入给出一个单词集合,每个单词一行,有L个字母,1<=L<=20.输入以EOF结束。

输出:

如果一个单词的子母和为素数,则输出“It is a prime word.”;否则输出“It is not a prime word.”

样例输入:

24 3 
24 2  
2 1  
1 1  
4 2  
18 3  
17 1  
17 3  
17 4  
100 5  
1000 10  
1120 14  
0 0

样例输出:

It is a prime word.
It is not a prime word.
It is not a prime word.


【解题思路

    特别提示:此题中1位素数。

    先离线计算出[21010]的素数筛u[]。然后计算字母对应的数字和。判断该数书否为素数。输出结果。

【具体实现

#include<iostream>
#include<cstring>

#define maxNum 1040

using namespace std;

int SIGN[maxNum];

int value(char c)
{
	if (c >= 'a' & c <= 'z')
		return c - 'a' + 1;
	else return c - 'A' + 27;
}

int main(){
	for (int i = 1; i <= maxNum; ++i)
		SIGN[i] = 1;
	for (int i = 2; i <= maxNum; ++i)
	if (SIGN[i])
	for (int j = 2 * i; j <= maxNum; j += i)
		SIGN[j] = 0;

	char str[25];
	while (cin >> str){
		int sum = 0;
		for (int i = 0; str[i]; ++i){
			sum += value(str[i]);
		}
		
		cout << "It is ";
		if (!SIGN[sum]) cout << "not ";
		cout << "a prime word." << endl;
	}

	return 0;
}


【额外补充

    此题中1为素数。

    1是素数吗?是我数学没学好?还是出题人的数学是体育老师教的?

    生无可恋。




转载于:https://my.oschina.net/CoderBleak/blog/664941

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值