Chinaunix首页 | 论坛 | 博客
  • 博客访问: 22334
  • 博文数量: 69
  • 博客积分: 1545
  • 博客等级: 上尉
  • 技术积分: 735
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-03 14:17
个人简介

fdsfdsfdsfds

文章分类

全部博文(69)

文章存档

2014年(8)

2012年(61)

我的朋友

分类: Java

2012-04-06 16:44:57

import java.util.*;

public class Main{
public static void main(String args[]){
  Scanner cin=new Scanner(System.in);
int n=cin.nextInt();
for(int i=0;i
boolean f=true;
String str=cin.next();
char[] c=str.toCharArray();
int[] cn=new int[26];
 
for(int j=0;j
cn[c[j]-'a']++;
}
int max=-1,min=99999;
  for(int j=0;j
 
if(max
if(cn[j]>0)
if(min>cn[j])
min=cn[j];
 
}
// if(max==min)min=0;
 
// if(c.length==1){
//    System.out.println("Lucky Word");
//    System.out.println(1);
// }
//
    if(Iszhi(max-min)){
    System.out.println("Lucky Word");
    System.out.println(max-min);
    f=false;
    }
    
    
    
if(f) {System.out.println("No Answer");
    System.out.println(0);
}

}
}
public static boolean Iszhi(int a){
if(a==0) return false;
if(a==1||a==2) return true;
for(int i=2;i<=(int)Math.sqrt(a);i++)
{
if(a%i==0)return false;
}
return true;
}
 

}

网上的:
 
#include
#include

#define MAX(x,y) (((x)>(y))?(x):(y))
#define MIN(x,y) (((x)<(y))?(x):(y))

void get_num(int a[], char str[]) // 得到每个字母的个数
{
int i = 0;
while (str[i])
a[str[i++]-'a'] ++;
}

bool is_prime(int x) // 判断是不是质数
{
if (x == 0 || x == 1)
return false;
for ( int i=2; i*i<=x; i++)
if (x%i == 0)
return false;
return true;
}

int main()
{
int T; char str[105];
int a[26], minn, maxn;
scanf("%d", &T); // 第一个输入的整数
while (T --)
{
scanf("%s", str); // 每次输入的单词,注意这里的输入都是小写字母的,没有空格
minn = 100; // 将minn设为最大值
maxn = 0; // 讲maxn设为最小值
memset(a, 0, sizeof(a)); // 将记录的数组清0
get_num(a, str);
for ( int i=0; i<26; i++)
if (a[i]) // 我这个单词一定是要出现过,这样才能判断是不是出现最多的还是最少的
{
maxn = MAX(maxn, a[i]);
minn = MIN(minn, a[i]);
} // 这里不用排序,排序的复杂度至少是O(nlogn),而得到极值的复杂度只要扫一遍
if (is_prime(maxn-minn)) // 看看最大和最少的差是不是质数
printf("Lucky Word\n%d\n", maxn-minn);
else
printf("No Answer\n0\n");
}
return 0;
}


标准答案 #include #include #include #include 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>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"<
阅读(198) | 评论(0) | 转发(0) |
0

上一篇:hdu 50 水题

下一篇:hdu 73

给主人留下些什么吧!~~