笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设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不是质数。
def find_num(num):
if num<2:
return False
for i in range(2,num):
if num%i==0:
return False
return True
word=input()
c_times=[word.count(x) for x in word]
max_=max(c_times)
min_=min(c_times)
if find_num(max_-min_):
print("Lucky Word")
print(max_-min_)
else:
print("No Answer")
print("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<string.h>
int zhishu(int x)
{
int i,j;
if(x==0||x==1) return 0;
for(i=2;i<x;i++)
{
if(x%i==0)
{
return 0;
}
}
return 1;
}
int main() {
char word[100]={0};
int max=0;
int min=100;
scanf("%s",word);
int i,j,x,y,count=1;
for(i=0;i<strlen(word);i++)
{
for(j=0;j<strlen(word);j++)
{
if(i==j) continue;
if(word[i]==word[j]) count++;
}
if(count>=max) max=count;
if(count<=min) min=count;
count=1;
}
x=max-min;
if(zhishu(x)==1)
{
printf("Lucky Word\n");
printf("%d",x);
}
else
{
printf("No Answer\n");
printf("%d",0);
}
return 0;
} #include <stdio.h>
#include <string.h>
_Bool isPrime(int n);
int main() {
char array[100];
scanf("%s", array);
int n = 0;
int max = 0, min = 1000;
int nums[1000] = { 0 };
for (int i = 0; i < strlen(array); i++) {
char a = array[i];
nums[a]++;
}
for (int i = 65; i <= 122; i++) {
if (nums[i] > max) {
max = nums[i];
}
if (nums[i] < min && nums[i] != 0) {
min = nums[i];
}
n = max - min;
}
if (isPrime(n) == 1) {
printf("Lucky Word");
printf("\n%d", n);
} else {
printf("No Answer");
printf("\n0");
}
return 0;
}
_Bool isPrime(int n) {
if (n <= 1) {
return 0;
} else {
for (int i = 2; i < n; i++) {
if (n % i == 0) {
return 0;
}
}
}
return 1;
} #include<stdio.h>
char c[100];
int a[30];
int isprime(int x)
{
if(x==2)
return 1;
if(x==1)
return 0;
int i;
if(x%2==0)
return 0;
for(i=3;i<x;i=i+2)
{
if(x%i==0)
return 0;
}
return 1;
}
int main()
{
gets(c);
for(int i=0;c[i]!='\0';i++)
{
a[c[i]-'a']++;
}
int max=0,min=100;
for(int i=0;i<=29;i++)
{
if(a[i])
{
if(a[i]>max)
max=a[i];
if(a[i]<min)
min=a[i];
}
}
if(isprime(max-min)==1)
printf("Lucky Word\n%d",max-min);
else
printf("No Answer\n0");
return 0;
} #include <iostream>
#include <cmath>
// 判断是否为质数
bool isPrime(int num) {
if (num < 2) return false;
bool flag = true;
for (int i = 2; i <= (int)std::sqrt(num); ++i) {
if (num % i == 0) {
flag = false;
break;
}
}
return flag;
}
int main() {
int arr[24] = {0};
char c;
while (scanf("%c", &c) != EOF) ++arr[c - 'a'];
int min = 100, max = 0;
for (int i = 0; i < 24; ++i) {
if (arr[i] == 0) continue;
min = min < arr[i] ? min : arr[i];
max = max > arr[i] ? max : arr[i];
}
if (isPrime(max - min)) printf("Lucky Word\n%d", max - min);
else printf("No Answer\n0");
return 0;
} #include<iostream>
#include<string>
#include<cmath>
using namespace std;
int main() {
string s;
int mat[26] = {0};
int max = 0;
int min = 100000;
getline(cin, s);
for (int i = 0; i < s.length(); ++i) {
mat[s[i] - 'a']++;
}
for (int i = 0; i < 26; i++) {
if(mat[i]>0){
if(mat[i]>max) max=mat[i];
if(mat[i]<min) min=mat[i];
}
}
int ans;
ans = max - min;
bool flag = true;
for (int i = 2; i <= sqrt(ans); i++) if (ans % i == 0) flag = false;
if (ans <2) cout << "No Answer"<<endl<<'0';
else if (ans ==2||flag) cout << "Lucky Word"<<endl<<ans;
else cout << "No Answer"<<endl<<'0';
return 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;
}
dicts = {}
char = input().strip()
for i in char:
dicts[i] = dicts.get(i,0)+1
arr = sorted([ v for k,v in dicts.items()])
number =(arr[-1] - arr[0])
medi = number//2+1
if number in [0,1]:
print('No Answer\n0')
elif number in [2,3]:
print(f'Lucky Word\n{number}')
else :
for i in range(2,medi):
if number%i==0:
print(f'No Answer\n{number}')
break
if i== medi-1:
print(f'Lucky Word\n{number}')
#include <stdio.h>
#include<string.h>
int Prime_munber(int diff) {
int key = 0;
for (int i = 2; i < diff; i++) {
if (diff % i == 0) {
key = 1;
break;
}
}
if ( key == 1 || diff == 0 || diff == 1) {
return 0;
} else {
return 1;
}
}
int main() {
int maxn = 0;
int minn = 100;
char word[100];
int arr[26] = { 0 };
gets(word);
int wordn = strlen(word);
for (int i = 0; i < wordn; i++) {
arr[word[i] - 'a']++;
}
for (int j = 0; j < wordn; j++) {
if (maxn < arr[word[j] - 'a']) {
maxn = arr[word[j] - 'a'];
}
if (minn > arr[word[j] - 'a']) {
minn = arr[word[j] - 'a'] ;
}
}
// printf("%d\n", maxn);
// printf("%d\n", minn);
int count = maxn - minn ;
if (count == 1) {
count--;
}
int num = Prime_munber(count);
if (num == 0) {
printf("No Answer\n");
printf("%d", count);
} else {
printf("Lucky Word\n");
printf("%d", count);
}
}对于
if (count == 1) {
count--;
}这句我为了解决beijing这个例子maxn-minn==0写的不知道为啥电脑判断是0难道不是i(maxn):2 (minn): 1 2 - 1 == 1 才是呀,求解惑
int prime(int m)
{
int i = 0;
for (i = 2; i <= sqrt(m); i++)
{
if (m % i == 0)
{
return 0;
}
}
return 1;
}
int main()
{
char arr[100] = { 0 };
int i = 0;
scanf("%s", arr);
int size = (int)strlen(arr);
int maxn = 0, minn = size;
int flag = 0;
//找maxn以及minn
for (i = 0; i < size; i++)
{
int count = 0;
for (int j = 0; j < size; j++)
{
if (arr[i] == arr[j])
{
count++;
}
}
if (count > maxn)
{
maxn = count;
}
else if (count < minn)
{
minn = count;
}
}
int m = maxn - minn;
if (m > 1)
{
flag = prime(m);
}
if (flag == 1)
{
printf("Lucky Word\n");
printf("%d", m);
}
else
{
printf("No Answer\n");
printf("0");
}
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.
//