CSP-J复赛 模拟题5补题报告

CSP-J复赛模拟题5补题报告

2023.10.5 Thu
S10473吴启瀚

1. 比赛报告

共4题, 第1题20分, 第2题30分, 第3题20分, 第4题0分, 共70分

2. 比赛过程

第一题 重复判断, 挺简单, 15分钟直接出代码
第二题 歪果仁学乘法, 更简单, 5分钟编完
第三题 去重求和, 20分钟想不出思路, 直接暴力, 放上大数据, 5分钟没运算完
第四题 点集操作, 没有思路, 暴力不出来

3. 题解

3.1 重复判断 repeat

3.1.1 题目大意:

判断字符串a是否是b重复得到

3.1.2 当时思路:

从0每次向后找b.size()位置搜索b, 搜索不到输出NO

3.1.3 题目解析:

用两个指针同时遍历, iii遍历a, jjj遍历b, 如果j到头, 调到开头继续比较
如果ai!=bja_i != b_jai!=bj, 不是b重复得到的, 遍历完没有多余字符才是重复字符串

3.1.4 AC代码:

#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
int l1, l2;
bool f;
string a, b;
int main(){
   
   
	int t;
	scanf("%d", &t);
	while(t--){
   
   
		cin >> a >> b;
		f = 0;
		l1 = a.size();
		l2 = b.size();
		for(int i = 0, j = 0;i < l1;i++){
   
   
			if(a[i] != b[j]){
   
   
				f = 1;
				break;
			}
			j = (j + 1) % l2;
		}
		if(!f)	printf("YES\n");
		else	printf("NO\n");
	}
	return 0;
}

3.2 歪果仁学乘法 multiplication

3.2.1 题目大意:

有一种不用乘法表也能计算乘法的方式, 对于a×ba \times ba×b;

  1. 将a和b的每一位上的数码画成线, 不同位之间分隔开

  2. a和b的方向垂直画出

  3. 数出每个方向上交点的个数, 即是c对应位置上的数码

3.2.2 当时思路:

a×ba \times ba×b各位分离, 累计求和

3.2.3 题目解析:

将a和b各位分离, 将两个分离数组每位加起来, 超过十进位, 累计求和

3.2.4 AC代码:

#include <iostream>
#include <cstdio>
using namespace std;
int a[10], b
### CSP-J 复赛模拟题下载及相关资源 对于参加CSP-J复赛的学生来说,获取高质量的模拟试题是非常重要的准备方式之一。以下是关于如何找到并下载这些模拟题的一些方法和建议。 #### 方法一:官方渠道 中国计算机学会(CCF)作为主办单位,通常会在其官方网站上发布一些历年真题及部分模拟题供考生练习[^1]。虽然完整的模拟试卷可能不会全部公开,但可以通过参与CCF授权的学习中心活动来获得更多的练习材料。 #### 方法二:在线编程平台 许多知名的在线编程学习网站会提供针对CSP竞赛的专项训练营或者免费课程,其中包含了大量类似的模拟测试题目。例如洛谷、牛客网等平台上都有专门设置好的CSP系列比赛专区[^2],用户可以注册账号后直接在线做题。 #### 方法三:教育机构资料分享 市面上有许多专注于信息学奥赛培训的教育机构也会整理出版自己的内部讲义与习题集,并通过网络形式对外售卖或赠送予学员家长群组成员之间相互交流共享[^3]。 #### 示例代码片段展示 下面给出了一段基于上述提到的一个具体问题场景下的解决思路实现: ```cpp #include <bits/stdc++.h> using namespace std; bool is_palindrome(const string& str){ int len = str.size(); for (int i = 0; i < len / 2; ++i) { if(str[i]!=str[len-i-1]) return false; } return true; } int main(){ ios::sync_with_stdio(false); cin.tie(0); int t; cin >> t; while(t--){ string s; cin >> s; transform(s.begin(), s.end(), s.begin(), ::tolower); if(is_palindrome(s)){ cout << "Yes\n"; }else{ cout << "No\n"; } } return 0; } ``` 此程序用于判断给定字符串是否为回文串,同时忽略字母大小写的差异处理[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值