ACM模版

这是一个新兴的OJ,希望可以越办越好,以后也多一个训练自己的平台~~~

试题一 将字符串中的字符按规则重新排列

描述

请编写程序,将输入字符串中的字符按以下规则重新排列(字符串长度不超过 1000,同时满足所有规则)。 规则 1:英文字母从 A 到 Z 排列,不区分大小写。例如,输入“Much”则输出“chMu”。
规则 2:同一个英文字母的大小写同时存在时,按照输入顺序排列。例如,输入“BabA”则输出“aABb”。 规则 3:非英文字母的其它字符保持原来的位置。例如,输入“By?e”则输出“Be?y”。

输入描述
输入数据为一行字符串。

输出描述
输出数据为一行字符串。

样例:
输入:2016 MaNongGu.com Programming Contest
输出:2016 aacCegGg.giM mmmNnnnoooo Prrsttu

题解

先将非字母的存到另一个数组中,其他的原封不动,然后逐个查找字母填空。

代码

#include <iostream>using namespace std;string strA;
string strB;int main(int argc, const char * argv[])
{int key = 0;char taga = 'a';char tagA = 'A';int count = 0;getline(cin, strA);for (int i = 0; i < strA.length(); i++){if ((strA[i] >= 'a' && strA[i] <= 'z') || (strA[i] >= 'A' && strA[i] <= 'Z')){strB[key++] = strA[i];}}for (int i = 0; i < strA.length(); i++){if ((strA[i] >= 'a' && strA[i] <= 'z') || (strA[i] >= 'A' && strA[i] <= 'Z')){bool flag = true;l:while (flag){for (int j = 0; j < key; j++){if (strB[j] == taga + count || strB[j] == tagA + count){strA[i] = strB[j];strB[j] = '*';flag = false;goto l;}}count++;}}}cout << strA << '\n';return 0;
}

试题二 统计出以某个字符串为前缀的单词数量

描述

老码农交给小码农很多单词(全部由小写字母组成,每个单词的长度不超过 10,且没有重复的单词),并要 他统计出以某个字符串为前缀的单词数量。注意:单词本身也是自己的前缀,例如,以字符串“is”为前缀 的单词有 is、iso、isoapiole 等。

输入描述: 第一部分是一张单词表,每行一个单词,字符串“88888888”代表单词表的结束(注意:单词表本身不包 括“88888888”)。第二部分是一连串的前缀字符串,每行一个。

输出描述: 对于每个前缀字符串,给出以该字符串为前缀的单词的数量,每行一个。

样例:
输入: manonggu
malonggu
model
absolute
acm
88888888
ma
m
ab
a
输出:
2
3
1
2

题解

一道常规的字符串匹配问题,甚至比常规的还简单。

代码

#include <iostream>
#include <string>using namespace std;string str[10000];
string flag;int main(int argc, const char * argv[])
{int i = 0;while (cin >> str[i]){if (str[i] == "88888888"){break;}i++;}while (cin >> flag){int ans = 0;for (int j = 0; j < i; j++){bool tag = true;for (int k = 0; k < flag.length(); k++){if (flag[k] != str[j][k]){tag = false;break;}}if (tag){ans++;}tag = true;}cout << ans << '\n';}return 0;
}

试题三 将数分成两组,使得两组中各元素的和相等

描述

请编写程序,读取 N 个整数,如果这 N 个数同时满足以下所有条件则输出 1,否则输出 0: (1)能分成两组,使得两组中各元素的和相等。
(2)所有 5 的倍数必须在其中一个组中,所有 3 的倍数在另一个组中(不包括 5 的倍数)。

输入描述:
第一行是数据个数 N,第二行是输入的数据。

输出描述: 1 或 0。

样例
输入:
4
-3 5 -5 3
输出:
1

题解

首先将符合第二个条件的分别加起来,求差,其他的存入数组排序,然后从大的开始,开始累加减,加或者减,受与差的相反数和累加减结果的大小的影响。

代码

#include <iostream>
#include <cmath>using namespace std;int num[1000];int main(int argc, const char * argv[])
{int N;cin >> N;int n;int key = 0;int sum_5 = 0;int sum_3 = 0;for (int i = 0; i < N; i++){cin >> n;if (n % 5 == 0){sum_5 += n;}else if (n % 3 == 0){sum_3 += n;}else{num[key++] = n;}}for (int i = 0; i < key - 1; i++){for (int j = i + 1; j < key; j++){if (fabs(num[i]) > fabs(num[j])){swap(num[i], num[j]);}}}int dif = sum_5 - sum_3;int res = 0;while (key){if (res > -dif){if (num[key - 1] > 0){res -= num[key - 1];}else{res += num[key - 1];}}else{if (num[key - 1] > 0){res += num[key - 1];}else{res -= num[key - 1];}}key--;}if (res == -dif){cout << "1" << '\n';}else{cout << "0" << '\n';}return 0;
}

试题四 求二进制数字符串的和

描述

请编写程序,给定两个长度不超过 100 的二进制数字符串,计算它们的和,和也是字符串。例如,a = “1010”,
b = “1011”,和为”10101”。注意:不能将二进制数转换为十进制数进行计算,因为当字符串太长时,会溢出。

输入描述
两个二进制数字符串,中间以空格隔开。

输出描述
两个二进制数的和。

样例
输入:
1010 1011
输出:
10101

题解

一道基础的字符串和数学加法运算的问题,了解二进制加法的规则即可。细节问题需要注意一些。

代码

#include <iostream>
#include <string>using namespace std;char strA[101];
char A[101];
char strB[101];
char B[101];
char C[101];void carry(int i)
{C[i] += 1;if (C[i] == '2'){C[i] = '0';carry(i + 1);}return ;
}int main(int argc, const char * argv[])
{cin >> strA >> strB;int keyA = 0;int keyB = 0;int lenA = (int)strlen(strA);int lenB = (int)strlen(strB);for (int i = lenA - 1; i >= 0; i--){A[keyA++] = strA[i];
//        cout << A[keyA - 1];}
//    cout << endl;for (int i = lenB - 1; i >= 0; i--){B[keyB++] = strB[i];
//        cout << B[keyB - 1];}
//    cout << endl;for (int i = 0; i < keyA + keyB; i++){C[i] = '0';
//        cout << C[i];}
//    cout << endl;int MAX = keyA > keyB ? keyA : keyB;int MIN = keyA < keyB ? keyA : keyB;for (int i = 0; i < MAX; i++){if (i < MIN){if (A[i] + B[i] - '0' - '0' == 1){C[i] += 1;}else if (A[i] + B[i] - '0' - '0' == 2){carry(i + 1);}if (C[i] > '1'){C[i] = '0';carry(i + 1);}}else{if (keyA > keyB){if (A[i] - '0' == 1){C[i] += 1;}if (C[i] > '1'){C[i] = '0';carry(i + 1);}}else{if (B[i] - '0' == 1){C[i] += 1;}if (C[i] > '1'){C[i] = '0';carry(i + 1);}}}}int lenC = (int)strlen(C);bool f = false;for (int i = lenC - 1; i >= 0; i--){if (C[i] != '0'){f = true;}if (f){cout << C[i];}}std::cout << '\n';return 0;
}

2016码农谷全国大学生程序设计邀请赛(测试赛)相关推荐

  1. 2011年全国大学生程序设计邀请赛(福州)

    题号 题目 考点 难度 A Password table 模拟 签到 B Axial symmetry 计算几何 代码题 C Log Calculator java大数 D Maximum Value ...

  2. ACM 五一杭电赛码BestCoder杯中国大学生程序设计冠军赛小记

    对于这项曾经热爱的竞赛,不得不说这是我最后一年参加ACM比赛了,所以要珍惜每一次比赛的机会. 五一去杭电参加了赛码"BestCoder"杯中国大学生程序设计冠军赛,去的队伍包括了今 ...

  3. “美登杯”上海市高校大学生程序设计邀请赛 **D. 小花梨的取石子游戏**

    "美登杯"上海市高校大学生程序设计邀请赛 (华东理工大学) D. 小花梨的取石子游戏 Description 小花梨有?堆石子,第?堆石子数量为??,?堆石子顺时针编号为1 − ? ...

  4. 上海市高校大学生程序设计邀请赛 C:小花梨判连通

    上海市高校大学生程序设计邀请赛 C:小花梨判连通 Problem C.小花梨判连通 时间限制:2000ms 空间限制:512MB Description 小花梨给出?个点,让?位同学对这?个点任意添加 ...

  5. 2017大学生程序设计邀请赛(华东师范大学) A.拼音魔法

    传送门:http://acm.ecnu.edu.cn/problem/3256/ 魔法学校小学一年级有一种题.就是给一个字的拼音,给一个声调,让你正确地注音.但魔法老师给了巨量的题,你不用魔法根本不可 ...

  6. 全国大学生软件测试开发者测试大赛笔记总结

    全国大学生软件测试开发者测试大赛笔记总结 (1)常用头文件 import static org.junit.Assert.assertEquals; import java.lang.reflect. ...

  7. 光电智能垃圾分拣车 第八届全国大学生光电设计竞赛 赛题 2

    第八届全国大学生光电设计竞赛 赛题 2 光电智能垃圾分拣车 5.20日的通知 因疫情影响,延期举行.但此赛题仍然有效,不会取消. 正文 1 竞技重点: 大视场垃圾搜寻.识别.分类.抢运能力. 2 竞赛 ...

  8. 第44届ICPC国际大学生程序设计亚洲区域赛(南京站)心得体会

    2019年10月27日在南京航天航空大学举行第44届ICPC国际大学生程序设计亚洲区域赛(南京站).我有幸能与袁应师兄.胡富云一起去参赛.这一次比赛深感愧疚,我们队没能做出一个题,还有自身实力太弱. ...

  9. 【超好懂的比赛题解】“山大地纬杯”第十二届山东省ICPC大学生程序设计竞赛(正式赛)

    title : "山大地纬杯"第十二届山东省ICPC大学生程序设计竞赛(正式赛) date : 2022-5-30 tags : ACM,题解,练习记录 author : Linn ...

最新文章

  1. 41-高级路由:BGP AS长度:接收一切、最大AS长度、不比较AS长度
  2. 机器学习数学原理 霍夫丁不等式
  3. MySQL的安装和初次使用
  4. 个人高效写作MarkDown博文模板
  5. javascript遍历DOM结构和对象结构
  6. html一个层下面两个小层并奇,我是一个奇数是一个两位数,十位数字与个位数字的积是2,猜猜看我是几?——青夏教育精英家教网——...
  7. 解读netty3.9的数据处理流程(一)
  8. codeforces 664B B. Rebus(乱搞题)
  9. you don't have permission to access forbidden
  10. android暗水印技术,基于Android的隐藏数字水印技术的研究与实现
  11. 扒谱大杂烩-都是前辈写的
  12. 三剑合一称霸互联网时代——Serverless助推云计算-大数据-人工智能
  13. eclipse与DW联合开发java web项目
  14. 啥也不懂,实现Deepin系统如何有效安装TL-WDN5200H v2.0 linux驱动,自测成功
  15. 网狐_经典版机器人添加说明
  16. 深入浅出理解reedsolomon库数据冗余算法原理和具体实现源码分析
  17. 移植TFT-LCD到HAL库
  18. 瑰雪黑阳rwby手游辅助材料 瑰雪黑阳rwby脚本工具获取途径
  19. java web 乱码_java web乱码解决方法
  20. Java 动态修改m3u8地址播放

热门文章

  1. Android USB开发小结:host模式与accessory模式
  2. 竟然是 300 万的诈骗案!
  3. 大物复习整理(自用)
  4. 等保2.0 Windows主机测评过程
  5. Windows Server 2008上安装Media Player
  6. 《Spring响应式微服务》读书笔记
  7. 使用expression design制作silverlight LOGO那种烟雾效果教程(翻译)
  8. PyQt(Python+Qt)学习随笔:QListView的itemAlignment属性
  9. [足式机器人]Part1 运动对称性Ch05——【Legged Robots that Balance 读书笔记】
  10. 使用偏好设置、属性列表、归档解档保存数据、恢复数据