3 条题解
-
2
#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
#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
#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
- 上传者