6 条题解

  • 2
    @ 2024-9-24 14:17:57

    #include<stdio.h> #include<string.h> int main(){ int n,i; scanf("%d",&n); while(n--){ char arr[100]; int b[1000]={0};//方便给值。 scanf("%s",arr); int a=strlen(arr);//求字符串长度。可以简化代码。 for(i=0;i<a;i++){ b[arr[i]-'0']++; } int max=b[arr[0]-'0'];//用气泡应该也可以,但是要考虑到0值。 int min=b[arr[0]-'0'];//将字母变成数字 for(i=0;i<a;i++){ if(b[arr[i]-'0']>max){ max=b[arr[i]-'0']; } if(b[arr[i]-'0']<min&&b[arr[i]-'0']!=0){ min=b[arr[i]-'0']; }//因为不出现b值为0,所以我们不比较0. } int o=max-min; int y=0; for(i=2;i<o;i++){ if(o%i0){ y=1;break; } } if(o0||o1){printf("No Answer\n0\n");} else if(y0||o==2){ printf("Lucky Word\n%d\n",o); } else{printf("No Answer\n0\n");}//因为我们的i是从2开始,我们要求o>i,所以没有考虑到0 1 2,因此在这里补充。

    }
    
    
    
    
    
    
    
    return 0;
    

    }

    • 2
      @ 2023-12-15 21:21:15
      #include <iostream>
      #include <algorithm>
      #include <string>
      #define MAX 10000
      
      using namespace std;
      
      int prime[MAX+5]={2};
      int is_prime[MAX+5]={2};
      int cnt=0;
      
      void oula();                 //构建欧拉筛 
      
      int main(){
      	
      	int n;
      	cin >> n;
      	while(n--){              //输入测试组数 
      	string a;
      	cin >> a;
      	oula();
      	int x=a.size();          //测量字符串长度 
      	int cun[26]={0};
      	for(int i=0;i<x;i++){
      		cun[a[i]-'a']++;     //把字母存到cun数组中 
      	}
      	sort(cun,cun+26);        //排序这个数组 
      	int z=0;
      	for(int i=0;i<26;i++){   
      		if(cun[i]!=0){       //寻找出现次数最少的字母
      			z=i;
      			break;
      		}
      	}
      	int p=0;
      	int x1=cun[25]-cun[z];   //用次数最多的减去最少的 
      	if(x1==0){               //对0特判 
      		p=0;
      	}
      	else{
      	for(int i=1;i<MAX;i++){  //判断是否为素数 
      		if(x1==prime[i]){
      			p=1;
      		}
      	}
      	}
      	if(p==1){
      		cout << "Lucky Word" << endl << x1 << endl;
      	}
      	else if(p==0){
      		cout << "No Answer" << endl << "0" << endl;
      	}
      	}
      	return 0;
      }
      
      void oula(){
      	is_prime[0]=is_prime[1]=1;
      	for(int i=2;i<=MAX;i++){
      		if(is_prime[i]==0){
      			prime[++cnt]=i;
      		}
      	for(int j=1;j<=cnt&&i*prime[j]<=MAX;j++){
      		is_prime[i*prime[j]]=1;
      		if(i%prime[j]==0){
      			break;
      		}
      	}
      	}
      }
      
      • 0
        @ 2025-10-5 14:27:36
        #include<stdio.h>
        #include<math.h>
        #include<string.h>
        int sushu(int x){//简单素数筛
            if(x<=1)return 0;
            if(x==2)return 1;
            if(x%2==0)return 0;
            for(int i=3;i<=sqrt(x);i+=2){
                if(x%i==0){
                    return 0;
                }
            }return 1;
        }
        int main()
        {
            char a[100];
            int n,l,max,min;
            scanf("%d",&n);
            while(n--){
                int b[26]={0};
                scanf("%s",a);
                l=strlen(a);
                for(int j=0;j<l;j++){
                    b[a[j]-'a']++;
                }max=0;
                min=100;//最大和最小取极限来判断(单词长度小于100)
                for(int k=0;k<26;k++){
                    if(b[k]>0){
                        if(b[k]>max){
                            max=b[k];
                        }if(b[k]<min){
                            min=b[k];
                        }
                    }
                }int cha=max-min;
                if(sushu(cha)){
                    printf("Lucky Word\n");
                    printf("%d\n",cha);
                }else{
                    printf("No Answer\n");
                    printf("0\n");
                }
            }
            return 0;
        }
        
        • 0
          @ 2025-10-5 13:18:58

          #include<stdio.h>

          #include<string.h>

          #include<math.h>

          int main(){

          int n,t,m;

          char a[105];

          scanf("%d",&n);

          while(n--){

          int maxn=0,minn=100;

          int b[200]={0};

          int x=0;

          scanf("%s",a);

          t=strlen(a);

          for(int i=0;i<t;i++){

          m=a[i];

          b[m]++;

          if(b[m]>maxn){

          maxn=b[m];

          }

          }

          for(int i=0;i<=200;i++){

          if(b[i]>=1&&b[i]<minn){

          minn=b[i];

          x=1;

          }

          }

          if(x==0){

          minn=0;

          }

          m=maxn-minn;

          int p=0;

          if(m0||m1){

          p=1;

          }

          for(int i=2;i<=sqrt(m);i++){

          if(m%i==0){

          p=1;

          break;

          }

          }

          if(p==0){

          printf("Lucky Word\n");

          printf("%d\n",m);

          }else{printf("No Answer\n0\n");}

          }

          return 0;

          }

          • 0
            @ 2025-9-13 22:53:24

            还得是Counter,非常好用😋

            .keys()方法返回键的列表,.values()返回值的列表,.items()返回由键值对元组组成的列表,

            most_common方法常用于排序,例如.most_common(2)可以返回前二大的键值对元组列表,空着则从大到小排列全部返回

            from math import sqrt
            from collections import Counter
            
            def isprime(x):
                if x <= 1:
                    return False
                else:
                    for i in range(2, int(sqrt(x)) + 1):
                        if x % i == 0:
                            return False
                return True
            
            
            for _ in range(int(input())):
                a = Counter(input()).values()
                b = max(a) - min(a)
                if isprime(b):
                    print("Lucky Word")
                    print(b)
                else:
                    print("No Answer")
                    print(0)
            
            • 0
              @ 2023-10-19 23:19:22

              #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; long long box[10009], c, m[109], minn, maxn, i, j, N, b, z[100]; char word[109]; void isPrime() { box[0] = 1, box[1] = 1; for (i = 2; i <= 10009; i++) { if (!box[i]) { for (j = i + i; j <= 10009; j = j + i) { box[j] = 1; } } } } int main(void) { isPrime(); scanf("%lld", &N); for(i=0;i<N;i++){ b = 0; c = 0; scanf("%s", word); for(j=0;j<26;j++){ z[j]=0; } while (word[b] != '\0') { z[word[b] - 'a']++; b++; } for(j=0;j<26;j++){ // printf("第%lld次\n",j+1); // printf("z=%lld\n",z[j]); } minn=99999; maxn=0; while (c < 26) { if (z[c]!=0) { if (z[c] > maxn) { // printf("maxn=%lld\n",maxn); maxn = z[c]; } if (z[c] < minn) { // printf("minn=%lld\n",minn); minn = z[c]; } } c++; } if (!box[maxn - minn]) { printf("Lucky Word\n"); printf("%lld\n",maxn-minn); }else{ printf("No Answer\n"); printf("0\n"); } } }

              • 1

              信息

              ID
              142
              时间
              2000ms
              内存
              128MiB
              难度
              8
              标签
              (无)
              递交数
              1115
              已通过
              206
              上传者