17-语言入门-17-笨小熊

题目地址: http://acm.nyist.net/JudgeOnline/problem.php?pid=62

?

描述
笨小熊的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小熊就认为这是个Lucky Word,这样的单词很可能就是正确的答案。

输入
第一行数据N(0<N<100)表示测试数据组数。
每组测试数据输入只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。
输出
每组测试数据输出共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”;

第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出0

样例输入
2
error
olympic
样例输出
Lucky Word
2
No Answer

0

?

?

代码:

#include <stdio.h>
#include <math.h>

#define true 1
#define false 0

//输入最大长度<100
const static int INPUTSTRLEN = 100;
//小写字母个数
const static int ALPHABETCOUNT = 26;

//判断是否是素数
static int isPrimeNumber(int number);
//计算(字符出现最多-字符出现最少)的值
static int calMaxSubMinValue(char *str);

int main()
{
??? int readLen = 0;
??? scanf("%d",&readLen);
??? getchar();
???
??? while (readLen > 0)
??? {
??????? char str[INPUTSTRLEN] = {0};
??????? gets(str);
???????
??????? int calValue = calMaxSubMinValue(str);
??????? if (isPrimeNumber(calValue) == true)
??????? {
??????????? printf("Lucky Word\n");
??????????? printf("%d\n",calValue);
??????? }
??????? else
??????? {
??????????? printf("No Answer\n");
??????????? printf("0\n");
??????? }
???????
??????? --readLen;
??? }
???
???
??? return 0;
}

//计算(字符出现最多-字符出现最少)的值
static int calMaxSubMinValue(char *str)
{
??? int index = 0;
??? int arr[ALPHABETCOUNT]={0};
???
??? for(;str[index] != ‘\0‘;++index)
??? {
??????? int flag = str[index]-‘a‘;
??????? ++arr[flag];
??? }
???
??? int minCount = INPUTSTRLEN;
??? int maxCount = 0;
???
??? index = 0;
??? for (; index < ALPHABETCOUNT; ++index)
??? {
??????? if (minCount > arr[index] && arr[index]!=0)
??????? {
??????????? minCount = arr[index];
??????? }
???????
??????? if (maxCount < arr[index])
??????? {
??????????? maxCount = arr[index];
??????? }
??? }
???
??? return minCount!=INPUTSTRLEN?maxCount - minCount:0;
}

//判断是否是素数
static int isPrimeNumber(int number)
{
??? if(number < 2)
??????? return false;
??? int i=2;
??? int k = sqrt(number);
??? for(;i<=k;++i)
??? {
??????? if(number%i == 0)
??????????? break;
??? }
??? if(i > k)
??????? return true;
??? else
??????? return false;
} ? ? ? ?

?

本体中将字符中每个字符-‘a‘作为一个int数组的索引

在数组指定的索引位置来累加出现的个数次数

最终通过该int数组,来获取最大出现次数和最小出现次数

?

?

时间: 2024-10-09 22:34:55

17-语言入门-17-笨小熊的相关文章

iOS开发入门——17条 Swift 最佳实践规范(下)

文章来源:http://www.zretc.com/technologyDetail/433.html 承接上文:iOS开发入门--17条 Swift 最佳实践规范(上) 9.单例(Singletons) 在Swift中单例是很简单的: class ControversyManager { static let sharedInstance = ControversyManager()} Swift 的 runtime 会保证单例的创建并且采用线程安全的方式访问. 单例通常只需要访问"share

Flask快速入门(17) — flask_session

Flask快速入门(17) - flask_session 作用:将默认保存的签名cookie中的值,保存到 redis/memcached/file/Mongodb/SQLAlchemy 安装:pip install flask-session 使用1: from flask import Flask,session from flask_session import RedisSessionInterface import redis app = Flask(__name__) conn=r

【南阳OJ分类之语言入门】80题题目+AC代码汇总

声明: 题目部分皆为南阳OJ题目. 代码部分包含AC代码(可能不止一个)和最优代码,大部分都是本人写的,并且大部分为c代码和少部分c++代码and极少java代码,但基本都是c语言知识点,没有太多差别,可能代码有的写的比较丑,毕竟知识有限. 语言入门部分题基本都较为简单,是学习编程入门的很好练习,也是ACM的第一步,入门的最佳方法,望认真对待. 本文由csdn-jtahstu原创,转载请注明出处,欢迎志同道合的朋友一起交流学习.本人QQ:1373758426和csdn博客地址. now begi

C语言入门(二十五)文件操作

文件操作  一.标准文件的读写 1.文件的打开fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程序就可用此FILE指针来实现对指定文件的存取操作了.当使用打开函数时,必须给出文件名.文件操作方式(读.写或读写),如果该文件名不存在,就意味着建立(只对写文件而言,对读文件则出错),并将文件指针指向文件开头.若已有一个同名文件存在,则删除该文件,若无同名文件,则建立该文件,并将文件指针指向文件开头. fopen(char *f

《Go语言入门》第一个Go语言Web程序——简单的Web服务器

概述 上一篇讲了 <Go语言入门>第一个Go语言程序--HelloWorld,接下来讲一下Go语言Web开发入门必修课:第一个Go语言Web程序--简单的Web服务器. 与其它Web后端语言不同,Go语言需要自己编写Web服务器. 有关本地环境的搭建与基础学习,请参考: <Go语言入门>如何在Windows下安装Go语言编程环境 Go语言Web应用:IBM的云平台Bluemix使用初体验--创建Go语言 Web 应用程序,添加并使用语言翻译服务 Web服务器代码 Google在ht

笨小熊

描述 笨小熊的词汇量很小,所以每次做英语选择题的时候都很头疼.但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小熊就认为这是个Lucky Word,这样的单词很可能就是正确的答案. 输入 第一行数据N(0<N<100)表示测试数据组数. 每组测试数据输入只有一行,是一个单词,其中只可能出现小写字母,并且长

c语言入门经典(第5版)

文章转载:http://mrcaoyc.blog.163.com/blog/static/23939201520159135915734 文件大小:126MB 文件格式:PDF    [点击下载] C语言入门经典(第5版)  内容简介: C语言是每一位程序员都应该掌握的基础语言.C语言是微软.NET编程中使用的C#语言的基础:C语言是iPhone.iPad和其他苹果设备编程中使用的Objective-C语言的基础:C语言是在很多环境中(包括GNU项目)被广泛使用的C++语言的基础.C语言也是Li

南阳62(笨小熊)

笨小熊 时间限制:2000 ms  |  内存限制:65535 KB 难度:2 描述 笨小熊的词汇量很小,所以每次做英语选择题的时候都很头疼.但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小熊就认为这是个Lucky Word,这样的单词很可能就是正确的答案. 输入 第一行数据N(0<N<100)表示测试

Go 语言入门(三)并发

写在前面 在学习 Go 语言之前,我自己是有一定的 Java 和 C++ 基础的,这篇文章主要是基于A tour of Go编写的,主要是希望记录一下自己的学习历程,加深自己的理解 Go 语言入门(三)并发 Go 程 「Go 程」goroutine:由 Go 运行时管理的轻量级线程. 运行「Go 程」很简单,只要执行下面代码: go f(x, y, z) 就会启动一个新的 Go 程并执行f(x, y, z).f.x.y和z的运算发生在当前的 Go 程中,而f的执行发生在新的 Go 程中. 「Go

第一节,C语言入门

1.标示符:    命名规则:    1.只能由字母.数字.下划线组成    2.不能数字开头    3.不能与关键字重名    4.严格区分大小写    命名规范:     1.起一个有意义名字     2.驼峰标示2.注释 注释: 对代码的解释说明,是写给程序看的,方面程序员之间交流 特点: 注释是不参与编译 /* 这里面可以写 */ 多行注释 // 这是一个单行注释 只有这一行是注释,只有 两个斜杠后面才是注释内容 /* */ command + / 注释或取消注释 多行注释是可以嵌套单行