3 条题解

  • 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
        @ 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
        标签
        (无)
        递交数
        1034
        已通过
        186
        上传者