[ CodeVS冲杯之路 ] P1053
不充钱,你怎么AC?
题目:http://codevs.cn/problem/1053/
直接扫一遍串,把字母对应的 ascii 码直接做数组下标,交给数组统计
最后查询一遍数组的 'a'-'z' ,找到最多的和最小的(注意判0)
再根号 n 地判断质数即可
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<cmath> 5 #include<iostream> 6 #include<algorithm> 7 using namespace std; 8 9 char s[101]; 10 int a[255]; 11 int main() 12 { 13 scanf("%s",s); 14 int len=strlen(s),i,m=0,k=100; 15 for (i=0;i<len;i++) a[s[i]]++; 16 for (i='a';i<='z';i++) 17 if (a[i]) 18 { 19 m=max(m,a[i]); 20 k=min(k,a[i]); 21 } 22 m-=k; 23 if ((!m)||(m==1)) 24 { 25 printf("No Answer\n0\n"); 26 return 0; 27 } 28 k=sqrt(m); 29 for (i=2;i<=k;i++) 30 if (m%i==0) 31 { 32 printf("No Answer\n0\n"); 33 return 0; 34 } 35 printf("Lucky Word\n%d\n",m); 36 return 0; 37 }