• 满足 测试用例 提交 不通过-----------修改了冒号,变成部分正确 但还有超时,不知道哪个边界没处理好


      1 #include <cctype>//判断字符类型需要的头文件
      2 #include<iostream>
      3 #include <sstream>
      4 using namespace std;
      5 
      6 void Swap(long long  &a, long long &b)
      7 {
      8     long long  temp = a;
      9     a = b;
     10     b = temp;
     11 }
     12 void QuickSort(long long *arr, int start, int count)
     13 {
     14     if (count == 1)
     15     {
     16         return;
     17     }
     18     long long stand = arr[start];
     19     Swap(arr[count / 2], stand);
     20     for (int i = 0, j = count - 1; i < count / 2 && i < j; i++, j--)
     21     {
     22         while (arr[i] < stand&&i<count / 2 && i<j)
     23         {
     24             i++;
     25         }
     26         while (arr[j]>stand&&j>count / 2 && i < j)
     27         {
     28             j--;
     29         }
     30         Swap(arr[i], arr[j]);
     31     }
     32     QuickSort(arr, start, count / 2);
     33     QuickSort(arr, count / 2 + 1, count - count / 2);
     34 }
     35 void quick_sort(long long *s, int l, int r)
     36 {
     37     if (l < r)
     38     {
     39         //Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1  
     40         int i = l, j = r, x = s[l];
     41         while (i < j)
     42         {
     43             while (i < j && s[j] >= x) // 从右向左找第一个小于x的数  
     44                 j--;
     45             if (i < j)
     46                 s[i++] = s[j];
     47 
     48             while (i < j && s[i] < x) // 从左向右找第一个大于等于x的数  
     49                 i++;
     50             if (i < j)
     51                 s[j--] = s[i];
     52         }
     53         s[i] = x;
     54         quick_sort(s, l, i - 1); // 递归调用   
     55         quick_sort(s, i + 1, r);
     56     }
     57 }
     58 bool IsPrime(int n)
     59 {
     60     if (n<2)
     61     {
     62         //小于2的数即不是合数也不是素数  
     63         return false;
     64     }
     65     for (unsigned i = 2; i<n / 2 + 1; ++i)
     66     {
     67         // 和比它的一半小数相除,如果都除不尽,证明素数  
     68         if (0 == n % i)
     69         {
     70             // 除尽了,合数  
     71             return false;
     72         }
     73     }
     74     return true; // 都没除尽,素数  
     75 }
     76 bool IsPrime2(int n)
     77 {
     78     if (n < 2)
     79     { // 小于2的数即不是合数也不是素数  
     80         return false;
     81     }
     82     static unsigned aPrimeList[] = { // 素数表  
     83         1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41,
     84         43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 113,
     85         193, 241, 257, 337, 353, 401, 433, 449, 577, 593, 641,
     86         673, 769, 881, 929, 977, 1009, 1153, 1201, 1217, 1249,
     87         1297, 1361, 1409, 1489, 1553, 1601, 1697, 1777, 1873,
     88         1889, 2017, 2081, 2113, 2129, 2161, 2273, 2417, 2593,
     89         2609, 2657, 2689, 2753, 2801, 2833, 2897, 3041, 3089,
     90         3121, 3137, 3169, 3217, 3313, 3329, 3361, 3457, 3617,
     91         3697, 3761, 3793, 3889, 4001, 4049, 4129, 4177, 4241,
     92         4273, 4289, 4337, 4481, 4513, 4561, 4657, 4673, 4721,
     93         4801, 4817, 4993, 5009, 5153, 5233, 5281, 5297, 5393,
     94         5441, 5521, 5569, 5857, 5953, 6113, 6257, 6337, 6353,
     95         6449, 6481, 6529, 6577, 6673, 6689, 6737, 6833, 6961,
     96         6977, 7057, 7121, 7297, 7393, 7457, 7489, 7537, 7649,
     97         7681, 7793, 7841, 7873, 7937, 8017, 8081, 8161, 8209,
     98         8273, 8353, 8369, 8513, 8609, 8641, 8689, 8737, 8753,
     99         8849, 8929, 9041, 9137, 9281, 9377, 9473, 9521, 9601,
    100         9649, 9697, 9857
    101     };
    102 
    103     const int nListNum = sizeof(aPrimeList) / sizeof(unsigned);//计算素数表里元素的个数  
    104     for (unsigned i = 2; i<nListNum; ++i)
    105     {
    106         if (n / 2 + 1<aPrimeList[i])
    107         {
    108             return true;
    109         }
    110         if (0 == n%aPrimeList[i])
    111         {
    112             return false;
    113         }
    114     }
    115     /*由于素数表中元素个数是有限的,那么对于用素数表判断不到的数,就只有用笨蛋办法了*/
    116     for (unsigned i = aPrimeList[nListNum - 1]; i<n / 2 + 1; i++)
    117     {
    118         if (0 == n%i)
    119         {
    120             // 除尽了,合数   
    121             return false;
    122         }
    123     }
    124     return true;
    125 }
    126 
    127 
    128 
    129 int main()
    130 {
    131     /*
    132      1059. C语言竞赛(20)
    133 
    134 时间限制
    135 200 ms
    136 内存限制
    137 65536 kB
    138 代码长度限制
    139 8000 B
    140 判题程序
    141 Standard
    142 作者
    143 CHEN, Yue
    144 C语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛。既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽:
    145 
    146 0. 冠军将赢得一份“神秘大奖”(比如很巨大的一本学生研究论文集……)。
    147 1. 排名为素数的学生将赢得最好的奖品 —— 小黄人玩偶!
    148 2. 其他人将得到巧克力。
    149 
    150 给定比赛的最终排名以及一系列参赛者的ID,你要给出这些参赛者应该获得的奖品。
    151 
    152 输入格式:
    153 
    154 输入第一行给出一个正整数N(<=10000),是参赛者人数。随后N行给出最终排名,每行按排名顺序给出一位参赛者的ID(4位数字组成)。接下来给出一个正整数K以及K个需要查询的ID。
    155 
    156 输出格式:
    157 
    158 对每个要查询的ID,在一行中输出“ID: 奖品”,其中奖品或者是“Mystery Award”(神秘大奖)、或者是“Minion”(小黄人)、或者是“Chocolate”(巧克力)。如果所查ID根本不在排名里,打印“Are you kidding?”(耍我呢?)。如果该ID已经查过了(即奖品已经领过了),打印“ID: Checked”(不能多吃多占)。
    159 
    160 输入样例:
    161 6
    162 1111
    163 6666
    164 8888
    165 1234
    166 5555
    167 0001
    168 6
    169 8888
    170 0001
    171 1111
    172 2222
    173 8888
    174 2222
    175 输出样例:
    176 8888: Minion
    177 0001: Chocolate
    178 1111: Mystery Award
    179 2222: Are you kidding?
    180 8888: Checked
    181 2222: Are you kidding?
    182      */
    183 
    184     int count = 0;
    185     cin >> count;//输入个数  
    186 
    187     string  members[10000];
    188     for (size_t i = 0; i < count; i++)
    189     {
    190         cin >> members[i];//录入 ID   排名
    191     }
    192 
    193     int countK = 0;//查询的个数
    194     string membersK[10000];
    195     string membersKvalue[10000];//对应的值
    196     cin >> countK;
    197     for (size_t i = 0; i < countK; i++)
    198     {
    199         cin >> membersK[i];//录入 查询ID   
    200         int flag = 0;//标志位 判断是否 存在该id
    201         int flag1 = 0;//标志位 判断是否 查询过
    202         for (size_t j = 0; j < count; j++)
    203         {
    204             if (membersK[i] == members[j])
    205             {
    206                 flag = 1;
    207                 if (j == 0)
    208                 {
    209                     membersKvalue[i] = "Mystery Award";
    210                     break;
    211                 }
    212                 if (IsPrime2(j+1))
    213                 {
    214                     membersKvalue[i] = "Minion";
    215                     break;
    216                 }
    217                 membersKvalue[i] = "Chocolate";
    218                 break;
    219             }
    220         }
    221         
    222         for (size_t k = 0; k <i; k++)
    223         {
    224             if (membersK[k] == membersK[i])
    225             {
    226                 flag1 = 1;
    227             }
    228         }
    229         if (flag1)
    230         {
    231             membersKvalue[i] = "Checked";
    232         }
    233         if (flag == 0)
    234         {
    235             membersKvalue[i] = "Are you kidding?";
    236         }
    237     }
    238 
    239     for (size_t i = 0; i < countK; i++)
    240     {
    241         cout << membersK[i] << ":" << membersKvalue[i] << endl;
    242     }
    243 
    244 
    245 
    246 
    247     return 0;
    248 }
  • 相关阅读:
    Found class xxx.xxx.xxx, but interface was expected
    String的length()和getBytes().length
    springboot shutdown(停机)
    关于Java代码简化的小技巧
    数据库的简单查询
    数据库TSQL语句
    环境搭建及wamp空密码修改
    js windows对象
    JS函数的其他用法【备于取用】
    js递归
  • 原文地址:https://www.cnblogs.com/linxuemufeng/p/8755196.html
Copyright © 2020-2023  润新知