现在的位置: 首页 > 综合 > 正文

NYOJ 62 笨小熊

2016年09月29日 ⁄ 综合 ⁄ 共 662字 ⁄ 字号 评论关闭

原题链接

考察对字符串的操作。

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

附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;
}

抱歉!评论已关闭.