zoukankan      html  css  js  c++  java
  • 62.笨小熊

    描述

    笨小熊的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
    这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小熊就认为这是个Lucky Word,这样的单词很可能就是正确的答案。

    输入
    第一行数据N(0<N<100)表示测试数据组数。
    每组测试数据输入只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。
    输出
    每组测试数据输出共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”;
    第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出0
    样例输入
    2
    error
    olympic
    样例输出
    Lucky Word
    2
    No Answer
    0
     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<math.h>
     4 #include<stdlib.h>
     5 
     6 int cmp(const void *a,const void *b) {
     7     return *(int *)b - *(int *)a; //从大到小排序,把a,b位置反过来就是从小到大
     8 }
     9 //假设是对int排序的话,如果是升序,那么就是如果a比b大返回一个正值,小则负值,相等返回0,其他的依次类推,
    10 
    11 int f(int n) {//判断素数
    12     if(n<2) 
    13         return 0;
    14     for(int i = 2; i <= sqrt(n); ++i)
    15         if(n % i == 0) 
    16             return 0;
    17         return 1;
    18 }
    19 
    20 int main( ) {
    21     int t, a[101], m;
    22     char s[101];
    23     scanf("%d", &t);
    24     while(t--) {
    25         scanf("%s", s);
    26         m = strlen(s);
    27         memset(a, 0, sizeof(a));
    28         for(int i = 0; i != m; ++i) {
    29             if(s[i] == '.') 
    30                 continue;
    31             ++a[i];
    32             for(int j = i + 1; j != m; ++ j)
    33                 if(s[j] == s[i]) {
    34                     ++ a[i];
    35                     s[j] = '.';
    36                 }
    37         }
    38 
    39         /*排序,降序
    40         qsort,包含在stdlib.h头文件里,函数一共四个参数,没返回值.其中第一个参数是参与排序的数组名;
    41         第二个参数是参与排序的元素个数; 第三个数是单个元素的大小*/
    42         qsort(a, 101, sizeof(int), cmp);
    43         int k = 0;
    44         while(k++ != 101)
    45             if(!a[k]) 
    46                 break;
    47             -- k;
    48             int x = a[0] - a[k];
    49             if(f(x))
    50                 printf("Lucky Word
    %d
    ", x);
    51             else
    52                 printf("No Answer
    0
    ");
    53     }
    54     return 0;
    55 }
    View Code
  • 相关阅读:
    算法竞赛入门经典习题2-3 韩信点兵
    ios入门之c语言篇——基本函数——5——素数判断
    ios入门之c语言篇——基本函数——4——数值交换函数
    144. Binary Tree Preorder Traversal
    143. Reorder List
    142. Linked List Cycle II
    139. Word Break
    138. Copy List with Random Pointer
    137. Single Number II
    135. Candy
  • 原文地址:https://www.cnblogs.com/tong69/p/5784247.html
Copyright © 2011-2022 走看看