C - 金币(扣了一分)

  1. #include <iostream>
  2. #include <cstdio>
  3. using namespace std;
  4. int k, sum = 0;
  5. int main(){
  6. cin >> k;
  7. if (k == 1) { cout << 1; return 0; }
  8. int t = 0, max = 0;
  9. for (int i = 1; i <= k; i++) {
  10. t += i;
  11. if (t > k) { max = i - 1; t -= i; break; }
  12. }
  13. for (int i = 1; i <= max; i++) {
  14. sum += i * i;
  15. }
  16. sum += (k - t) * (max + 1);
  17. cout << sum;
  18. return 0;
  19. }

F - 笨小猴(扣了一分)

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <string>
  4. #include <algorithm>
  5. #include <vector>
  6. #include <cmath>
  7. using namespace std;
  8. struct NODE {
  9. char ch;
  10. int num;
  11. }node[26];
  12. int cmp(struct NODE a, struct NODE b) {
  13. return a.num < b.num;
  14. }
  15. bool check(int n) {
  16. if (n == 1 || n == 0) return false;
  17. for (int i = 2; i < sqrt(n); i++) {
  18. if (n % i == 0) return false;
  19. }
  20. return true;
  21. }
  22. int main(){
  23. for (int i = 0; i < 26; i++) { //初始化结点
  24. node[i].ch = 'a' + i;
  25. node[i].num = 0;
  26. }
  27. string s;
  28. cin >> s;
  29. for (int i = 0; i < s.size(); i++) { //输入结点
  30. node[s[i] - 97].num++;
  31. }
  32. int maxn = 1, minn = 1;
  33. //char maxch, minch;
  34. for (int i = 0; i < 26; i++) { //处理结点
  35. if (node[i].num) {
  36. if (maxn < node[i].num) maxn = node[i].num;
  37. if (minn > node[i].num) minn = node[i].num;
  38. }
  39. }
  40. if (check(maxn - minn)) {
  41. cout << "Lucky Word" << endl << maxn - minn;
  42. }
  43. else {
  44. cout << "No Answer" << endl << 0;
  45. }
  46. return 0;
  47. }
  • 优雅的改进版↓(虽然还是扣了一分,明明在洛谷是100%.jpg)
    1. #include<cstdio>
    2. #include<cstring>
    3. #include<iostream>
    4. using namespace std;
    5. string s;
    6. const int prime[25] = { 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97 };//打表
    7. int sum[26];
    8. int main() {
    9. int maxn = -999, minn = 999; //注意初始化max 和 min 的习惯
    10. cin >> s;
    11. for (int i = 0; i < s.size(); i++) {
    12. sum[s[i] - 'a']++;
    13. }
    14. for (int i = 0; i < 26; i++) {
    15. if (sum[i] > maxn) maxn = sum[i];
    16. if (sum[i] > 0 && sum[i] < minn) minn = sum[i];
    17. }
    18. for (int i = 0; i < 25; i++) { //遍历100以内的质数
    19. if (maxn - minn == prime[i]) {
    20. printf("Lucky Word\n%d", maxn - minn);
    21. return 0;
    22. }
    23. }
    24. printf("No Answer\n0");
    25. return 0;
    26. }

    K- 生活大爆炸版石头剪刀布(模拟)(AC了但是出现了C6385warming)

    ```cpp

    include

    include

    using namespace std;

int N, Na, Nb; int a[1010], b[1010]; int aa, bb; int battle[5][5] = { {0,0,1,1,0},{1,0,0,1,0},{0,1,0,0,1},{0,0,1,0,1},{1,1,0,0,0} }; //用二维表保存规则

int main() { cin >> N >> Na >> Nb; for (int i = 0; i < Na; i++) cin >> a[i]; for (int i = 0; i < Nb; i++) cin >> b[i];

  1. for (int i = 0; i < N; i++)
  2. {
  3. aa += battle[a[i % Na]][b[i % Nb]];
  4. bb += battle[b[i % Nb]][a[i % Na]];
  5. }
  6. cout << aa << " " << bb << endl;
  7. return 0;

}

  1. <a name="VIhYd"></a>
  2. ## G - 插火把(如何模拟得更简明)
  3. ```cpp
  4. #include<iostream>
  5. #include<cstdio>
  6. #include<cstring>
  7. const int MAXN = 101;
  8. using namespace std;
  9. int n, m, k, x, y, o, p, ans = 0;
  10. bool a[MAXN][MAXN] = { 0 };
  11. int dx1[13] = { 2,0,-2,0,1,1,1,0,0,0,-1,-1,-1 }, //火把的13个范围
  12. dy1[13] = { 0,2,0,-2,0,1,-1,1,0,-1,0,1,-1 };
  13. int dx2[25] = { -2,-2,-2,-2,-2,-1,-1,-1,-1,-1,0,0,0,0,0,1,1,1,1,1,2,2,2,2,2 }, //萤石的25个范围
  14. dy2[25] = { -2,-1,0,1,2,-2,-1,0,1,2,-2,-1,0,1,2,-2,-1,0,1,2,-2,-1,0,1,2 };
  15. bool check(int x, int y) {
  16. if (x < 1 || x > 100 || y < 1 || y > 100) return false;
  17. return true;
  18. }
  19. int main()
  20. {
  21. cin >> n >> m >> k;
  22. for (int i = 1; i <= m; i++)
  23. {
  24. cin >> x >> y;
  25. for (int j = 0; j < 13; j++)
  26. if(check(x + dx1[j], y + dy1[j])) a[x + dx1[j]][y + dy1[j]] = 1;
  27. }
  28. for (int i = 1; i <= k; i++)
  29. {
  30. cin >> o >> p;
  31. for (int j = 0; j < 25; j++)
  32. if (check(o + dx2[j], p + dy2[j])) a[o + dx2[j]][p + dy2[j]] = 1;
  33. }
  34. for (int i = 1; i <= n; i++)
  35. for (int j = 1; j <= n; j++)
  36. if (a[i][j] == 0)
  37. ans++;
  38. cout << ans;
  39. return 0;
  40. }