笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。
笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。
一行由小写字母组成的字符串,并且长度小于100。
共两行,第一行是一个字符串,第二行是一个整数。假设输入的的单词是Lucky Word,那么输出“Lucky Word”,第二行输出maxn-minn的值。否则输出“No Answer”,第二行输出0。
error
Lucky Word 2
单词error中出现最多的字母r出现了3次,出现次数最少的字母出现了1次,3-1=2,2是质数。
olympic
No Answer 0
单词olympic中出现每个字母都只出现一次,即出现次数最多的字母出现了1次,出现次数最少的字母出现了1次,1-1=0,0不是质数。
#include<stdio.h>
#include<string.h>
int Is_Prime(int result)
{
int i = 0;
if(result==0||result == 1)
return 0;
if(result == 2)
return 1;
else
{
for(i=2;i<result;i++)
{
if(result % i ==0)
{
return 0;
}
}
return 1 ;
}
}
void init_arr(int arr[100])
{
int i = 0;
for(i=0;i<100;i++)
{
arr[i]=0;
}
}
void function(int arr[100],int sz)
{
int i = 0;
int max = 0;
int min = 100;
int result = 0;
for(i=0;i<sz;i++)
{
if(arr[i]>max)
{
max = arr[i];
}
if(arr[i]<min)
{
min = arr[i];
}
}
result = max -min;
if(Is_Prime(result))
{
printf("Lucky Word\n%d",result);
}
else
{
printf("No Answer\n0");
}
}
int main()
{
char input[100];
int arr[100];
scanf("%s",input);
int sz = strlen(input);
int i = 0;
int j = 0;
init_arr(arr);
for(i=0;i<sz;i++)
{
int count = 0;
for(j=0;j<sz;j++)
{
if(input[i]==input[j])
{
count++;
}
}
arr[i]=count;
}
function(arr,sz);
return 0;
} #include <stdio.h>
int main() {
char chan[100]={};int n=0,su[100]={};
//将字符串输入到数组中,并获数组最后一个元素下标
while (scanf("%c",&chan[n])!=EOF) {
n++;
}
n-=2;
//用数组记录字符串的每一位出现的次数
for (int x=n; x>=0; x--) {
su[x]=0;
for (int j=0; j<=n; j++) {
if (chan[x]==chan[j]) {
su[x]++;
}
}
}
//将数组顺序改为 最小数放在最前面 最大数放在最后面
int huan;//交换区
int cd=n;//保存n值
for (int x=0; x<=n; x++) {
cd=n;
for (int y=1; y<=n; y++) {
if (su[cd]<su[cd-1]) {
huan=su[cd];
su[cd]=su[cd-1];
su[cd-1]=huan;
}
cd--;
}
}
//计算该字符串最小次与最大次出现次数相减是否为质数
int ca=su[n]-su[0];//最大次与最小次的差值
int zs=0;//记录是否有除了1和本身外其他的数能除尽,有则变量加1,没有则不变
if (ca==0||ca==1) {
printf("No Answer\n0");
}
else {
for (int x=2; x<ca; x++) {
if (ca%x==0) {
zs++;
}
}
if (zs==0) {
printf("Lucky Word\n%d",ca);
}
else {
printf("No Answer\n0");
}
}
//测试su数组中的值是否正确
/*for (int x=0 ; x<=n; x++) {
printf("%d",su[x]);
}
printf("\n");
printf("%d",ca);*/
return 0;
} #include <stdio.h>
#include <ctype.h>
#define MAX_NUM 100;
int main() {
char word[100] = "0";
char num[26] = {0}; //计算字母数量的字符串
scanf("%s",word);
//判断是否为小写字母
for (int i = 0; word[i]; i++) {
if (isalpha(word[i])){
num[tolower(word[i]) - 'a']++;
}
}
//找出最大最小数
int maxn = 0, minn = MAX_NUM;
for (int i = 0; i < 26; i++) {
if (num[i] > 0){
if (num[i] > maxn){
maxn = num[i];
}
if (num[i] < minn){
minn = num[i];
}
}
}
int ret = maxn - minn;
int count = 0;
//判断是否质数
for (int i = 2; i < ret; i++) {
if (ret % i == 0){
count++;
}
}
//0和1不是质数
if (ret == 0 || ret == 1){
printf("No Answer\n");
printf("0");
}else{
if (count == 0){
printf("Lucky Word\n");
printf("%d",ret);
}
else{
printf("No Answer\n");
printf("0");
}
}
return 0;
}
//
// Created by Wilbur Lee on 6/7/2024.
//
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
// 判断质数
bool is_prime(int n)
{
// 质数的定义 >=1 的数, 只能被1和本身整除
if(n <= 1)
{
return false;
}
else{
// 质数是一个合数, c = a*b, a和b不可能同时大于sqrt(n)
for(int i = 2; i*i<=n; ++i)
{
if(n%i == 0)
{
return false;
}
}
}
return true;
}
int main() {
// 获取并且存放字符串
char str[100]={0};
gets(str);
// 使用一个数组用于记录字母出现的次数
int arrcount[26]={0};
for(int i = 0; i<strlen(str); ++i)
{
arrcount[str[i] - 'a']++;
}
// 遍历数组选出出现次数最多和最少
int maxn = 0, minn = 100;
int count = 0;
for(int i = 0; i<26; ++i)
{
// 如果出现的次数不为0我们进行判断
if(arrcount[i] != 0)
{
count = arrcount[i];
// 次数比最大还大
if(count>maxn)
{
maxn = count;
}
// 次数比最小还小
if(count<minn)
{
minn = count;
}
}
}
// 差距
int gap = maxn - minn;
// 判断是否是质数,换成相应的输出
if(is_prime(gap))
{
printf("Lucky Word\n");
printf("%d\n", gap);
}
else{
printf("No Answer\n");
printf("%d\n", 0);
}
return 0;
} #include <stdio.h>
#include <math.h>
int IsPrime(int x)
{
if (x == 2) return 1;//2是素数
if (x <= 1 || x % 2 == 0) return 0;//小于等于1的不是素数,2以外的所有偶数不是素数
int i = 0;
for (i = 3; i <= sqrt(x); i += 2)//只遍历奇数
{
if (x % i == 0) return 0;
}
return 1;
}
int main()
{
char word[100] = { 0 };
int arr[27] = { 0 };//用桶排序思想来记录字母出现次数
char* p = word;
int i = 0;
int max = 0;
int min = 0;
scanf("%s", word);
//遍历单词,进行计数
for (i = 0; *(p + i) != '\0'; i++)
{
arr[*(p + i) - 97]++;
}
//为min、max寻找基准数
for (i = 0; i < 27; i++)
{
if (arr[i] != 0)
{
max = min = arr[i];
break;
}
}
//遍历数组,寻找最大及最小次数出现次数
for (i = 0; i < 27; i++)
{
max = max > arr[i] ? max : arr[i];
//找最小数时必须添加判断条件,使min不得为0
//不然min在结束时几乎必然为0
if (arr[i] != 0 && min > arr[i])
{
min = arr[i];
}
}
if (IsPrime(max - min))
{
printf("Lucky Word\n");
printf("%d\n", max - min);
}
else
{
printf("No Answer\n");
printf("0\n");
}
p = NULL;
return 0;
} #include <stdio.h>
#include <string.h>
int judge(int a) {
int tag = 0;
if(a == 0 || a == 1){
return 0;
}
for(int x=1; x<=a; x++){
if((a % x) == 0){
tag++;
}
}
if(tag<=2){
return 1;
}
return 0;
}
int main() {
char word[100]={0};
scanf("%s", word);
int maxn=0, minn=strlen(word), tag=0;
for(int i=0; i<strlen(word); i++){
tag = 0;
for(int j=0; j<strlen(word); j++){
if(word[i]==word[j] && i!=j){
tag++;
}
}
maxn = tag>maxn?tag:maxn;
minn = tag<minn?tag:minn;
}
if(judge(maxn-minn) == 1){
printf("Lucky Word\n%d", maxn-minn);
}
if(judge(maxn-minn) == 0){
printf("No Answer\n0");
}
return 0;
} #include <stdio.h>
#include<string.h>
int main()
{
char arr[10] = {0};
gets(arr);
int sum = 0,maxn = 0,minn = 10;
int i,sor;
for(i=0;i<strlen(arr);i++)
{
sum = 0;
int j;
for(j=0;j<strlen(arr);j++)
{
if(arr[i] == arr[j])
{
sum++;
}
}
if(maxn<sum)
{
maxn = sum;
}
if(minn>sum)
{
minn = sum;
}
}
sor = maxn - minn;
int flag = 1;
for(i=2;i<sor;i++)
{
if(sor%i==0)
{
flag = 0;
}
}
if(flag==1&&sor!=0&&sor!=1)
{
printf("Lucky Word\n%d",sor);
}
else {
printf("No Answer\n0");
}
return 0;
} #include <stdio.h>
int main()
{
char arr[106] = {0};
int count[28] = {0};
int max = 0,min = 101,t = 0;
scanf("%s",arr);
for(int i = 0;arr[i];i++)
{
t = arr[i]-'a';
count[t]++;
if(count[t]>max) max = count[t];//求最大
}
for(int i = 0;i<=25;i++)
{
if(count[i]<min && count[i] != 0) min = count[i];//求最小
}
t = max-min;//差值
//putchar(t+'0');
if(t>1)
{
for(int i = 2;i<=t/i;i++)//判断是否为质数
{
if(t%i==0)
{
puts("No Answer");
putchar('0');
return 0;
}
}
printf("Lucky Word\n%d",t);
return 0;
}
puts("No Answer");
putchar('0');
return 0;
}