笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。
笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。
只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。
共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”;
第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出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 <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; }
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> #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 <stdio.h> #include <ctype.h> #include <math.h> int main() { char arr[50]; scanf("%s",arr); int count=0; for (int i=0; i<100; i++) { if (isupper(arr[i])) { arr[i]=tolower(arr[i]); } if (arr[i]!='\0') { count++; } else { break; } } int max=0; int min=100; for (int i=0; i<count; i++) { int ret=0; for (int j=0; j<count; j++) { if (arr[i]==arr[j]) { ret++; } } if (ret>max) { max=ret; } if (min>ret) { min=ret; } } int tmp=max-min; if (tmp==1 || tmp==0) { printf("No Answer\n"); printf("0"); return 0; } if (tmp==2) { printf("Lucky Word\n"); printf("%d",tmp); return 0; } for (int i=2; i<tmp; i++) { if (tmp%i==0) { printf("No Answer\n"); printf("0"); return 0; } } printf("Lucky Word\n"); printf("%d",tmp); 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; }
package main import ( "fmt" ) func isPrime(n int) bool { if n < 2 { return false } for i := 2; i <= n/i; i++ { if n%i == 0 { return false } } return true } func main() { var s string fmt.Scan(&s) mp := make(map[rune]int, 24) for _, v := range s { mp[v]++ } minn, maxn := 99, 0 for _, v := range mp { if v < minn { minn = v } if v > maxn { maxn = v } } if !isPrime(maxn-minn) { fmt.Printf("%s\n%d", "No Answer", 0) } else { fmt.Printf("%s\n%d","Lucky Word",maxn-minn) } }
#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> #include <string.h> int main() { char arr[100] = { 0 }; gets(arr); int len = strlen(arr); int maxn = 0; int minn = 100; int i = 0; for (i = 0; i < len; i++) { int j = 0; int count = 1; for (j = 1; j < len; j++) { if (arr[j] == arr[i] && i!=j) { count++; } } if (count > maxn) { maxn = count; } if (count < minn) { minn = count; } } int ret = maxn - minn; int flag = 1; for(i=2;i<ret;i++) { if(ret%i==0) { flag = 0; } } if ((ret != 0 && ret != 1) && flag == 1) { printf("Lucky Word\n"); printf("%d\n", ret); } else if((ret == 0 || ret == 1) || flag == 0) { printf("No Answer\n"); printf("0\n"); } return 0; }
#include<stdio.h> #include<string.h> int iszhishu(int); int main(void) { char n[100]; scanf("%s", n); int len = strlen(n); int count[len]; int i, j; for (i = 0; i < len; i++) { count[i]=0; for (j = 0; j < len; j++) { if (n[i] == n[j]) { count[i]++; } } } int maxn = 0; int minn = 100; for (i = 0; i < len; i++) { if (count[i] > maxn) maxn = count[i]; if (count[i] < minn) minn = count[i]; } int delta = maxn - minn, result; if (delta < 2) { printf("No Answer\n"); printf("0"); } else { result = iszhishu(delta); if (result == 0) printf("%d", delta); } return 0; } int iszhishu(int num) { int i; for (i = 2; i < (int)(sqrt(num) + 1); i++) { if (num % i == 0) { printf("No Answer\n"); printf("0"); return 1; } } printf("Lucky Word\n"); return 0; }