GitBook

这里写图片描述 这里写图片描述

本来挺简单的一题 结果想多了…… 出了一些偏差

#include<stdio.h>
#include<math.h>
int main() {
	int T;
	scanf("%d",&T);
	getchar();
	while(T--) {
		int a[26]= {0};
		char c;
		while(c=getchar()) {
			if(c<'a'||c>'z')
				break;
			else {
				++a[c-'a'];
			}
		}
		int max=0,min=120;
		for(int i=0; i<26; i++) {
			if(!a[i])
				continue;
			else {
				if(max<a[i])
					max=a[i];
				if(min>a[i])
					min=a[i];
			}
		}
		int i,m=max-min;
		if(m<2)
			i=0;
		else {
			for(i=2; i<=sqrt(m); i++)
				if(m%2==0)
					break;
		}
		if(i<=sqrt(m))
			printf("No Answer\n0\n");
		else
			printf("Lucky Word\n%d\n",m);
	}
	return 0;
}

还是感觉标程写的好乱 自己写了一个寻找除0之外的最小值的函数

#include<iostream>
#include<string>
#include<algorithm>
#include<numeric>
using namespace std;
bool isPrime(int n) {
	if(n==0) return false;
	if(n==1) return false;
	if(n==2) return true;
	for(int i=2; i*i<=n; i++) {
		if(n%i==0) return false;
	}
	return true;

}
int min_e(int *p,int *q) {
	int m=1000;
	for(int* i=p; i!=q; i++) {
		if(*i<m && *i!=0) m=*i;
	}
	return m;
}
int main() {
	int n;
	string str;
	cin>>n;
	while(n--) {
		int count[26]= {0};
		cin>>str;
		for(int i=0; i!=str.size(); ++i) {
			++count[str[i]-'a'];
		}
		int nn=*max_element(count,count+26)-min_e(count,count+26);
		if(isPrime(nn)) cout<<"Lucky Word"<<endl<<nn<<endl;
		else cout<<"No Answer"<<endl<<0<<endl;

	}
}

题目地址:【NYOJ】[62]笨小熊