您的位置:首页 > 其它

NYOJ 62 笨小熊

2014-02-11 16:43 197 查看
原题链接

考察对字符串的操作。

将各个字符出现的次数保存到数组中,重复出现的赋值为 ‘.’, 再将数组降序排序,后面就简单了。

附ac代码:

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int cmp(const void *a, const void *b){
return *(int *)b - *(int *)a;
}

int f(int n){ //判断素数
if(n < 2) return 0;
for(int i = 2; i <= sqrt(n); ++i)
if(n % i == 0) return 0;
return 1;
}

int main(){
int t, ok, a[101];
char s[101];
scanf("%d", &t);
while(t-- && scanf("%s", s)){
memset(a, 0, sizeof(a));
for(int i = 0; i != strlen(s); ++i){
if(s[i] == '.') continue;
++a[i];
for(int j = i + 1; j != strlen(s); ++j)
if(s[j] == s[i]){
++a[i];
s[j] = '.';
}
}
//排序,降序
qsort(a, 101, sizeof(int), cmp);
int i = 0;
while(i++ != 101)
if(!a[i]) break;
--i;
int x = a[0] - a[i];
if(f(x)) printf("Lucky Word\n%d\n", x);
else printf("No Answer\n0\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: