首页 > 编程语言 >历年CSP-J初赛真题解析 | 2017年CSP-J初赛阅读程序(23-26)

历年CSP-J初赛真题解析 | 2017年CSP-J初赛阅读程序(23-26)

时间:2024-09-04 13:54:35浏览次数:10  
标签:26 include int 个数 cnt 初赛 2017 解析 CSP

学习C++从娃娃抓起!记录下CSP-J备考学习过程中的题目,记录每一个瞬间。

附上汇总贴:历年CSP-J初赛真题解析 | 汇总_热爱编程的通信人的博客-CSDN博客


#include <iostream>
using namespace std;
int main()
{
	int t[256];
	string s;
	int i;
	cin >> s;
	for (i=0; i<256; i++)
		t[i] = 0;
	for (i=0; i<s.length(); i++)
		t[s[i]]++;
	for (i=0; i<s.length(); i++)
		if (t[s[i]]==1)
		{
			cout << s[i] << endl;
			return 0;
		}
	cout << "no" << endl;
	return 0;
}

第23题

输入:xyzxyw

输出:( )

【答案】:z

【解析】

程序的功能是输出第一个只出现1次的字母7845690-23978-6=

#include <iostream>
using namespace std;

int g(int m, int n, int x)
{
	int ans = 0;
	int i;
	if (n==1)
		return 1;
	for (i=x; i<=m/n; i++) 
		ans += g(m-i, n-1, i);
	return ans;
}

int main()
{
	int t, m, n;
	cin >> m >> n;
	cout << g(m, n, 0) << endl;
	return 0;
}

第24题

输入:7 3

输出:( )

【答案】:8

【解析】

g(7,3,0)=g(7,2,0)+g(6,2,1)+g(5,2,2)

g(7,2,0)=g(7,1,0)+g(6,1,1)+g(5,1,2)+g(4,1,3)=4

g(6,2,1)=g(5,1,1)+g(4,1,2)+g(3,1,3)=3

g(5,2,2)=g(3,1,2)=1

所以g(7,3,0)=8

求排列组合的题,m+x==m的方案数

#include <iostream>
using namespace std;

int main()
{
	string ch;
	int a[200];
	int b[200];
	int n, i, t, res;
	cin >> ch;
	n = ch.length();
	for (i=0; i<200; i++)
		b[i] = 0;
	for (i=1; i<=n; i++)
	{
		a[i] = ch[i-1] - '0';
		b[i] = b[i-1] + a[i];
	}
	res = b[n];
	t = 0;
	for (i=n; i>0; i--)
	{
		if (a[i]==0)
			t++;
		if (b[i-1]+t<res)
			res = b[i-1] + t;
	}
	cout << res << endl;
	return 0;
}

第25题

输入:1001101011001101101011110001

输出:( )

【答案】:11

【解析】

012345678910111213141516171819202122232425262728
ch1001101011001101101011110001
a[ ]01001101011001101101011110001
b[ ]01112334456667889101011111213141515151516
t
1212111010109988876665554433333210
res1112131415

b数组是在算从头到i的“1”的个数(前缀和),res为a数组中1的个数,t是从i到尾的“0”的个数(后缀和)。

程序的目的是将字符串劈成两半,前一半统计1的个数,后一半统计0的个数,计算什么时候得到的两者的个数最小。

#include <iostream>
using namespace std;
int main()
{
	int n, m;
	cin >> n >> m;
	int x=1;
	int y=1;
	int dx=1;
	int dy=1;
	int cnt = 0;
	while (cnt != 2)
	{
		cnt = 0;
		x = x + dx;
		y = y + dy;
		if (x==1 || x == n) 
		{
			++cnt;
			dx = -dx;
		}
		if (y==1 || y==m)
		{
			++cnt;
			dy = -dy;
		}
	}
	cout << x << " " << y << endl;
	return 0;
}

第26题

输入1:4 3

输出1:( )

输入2:2017 1014

输出2:( )

【答案】:1 3 和2017 1

【解析】

xydxdycnt
11110
22110
331-10/1
42-1-10/1
31-110/1
22-110
131-10/1/2

两个if语句都成立,才能结束while循环。(n-1)和(m-1)的最小公倍数。2017和2014的最小公倍数是2016 * 1013,即x走1013次,y走2016次,则1013为奇数,所以x到了2017,2016为偶数,所以y到了1

标签:26,include,int,个数,cnt,初赛,2017,解析,CSP
From: https://blog.csdn.net/guolianggsta/article/details/141805064

相关文章

  • 代码随想录 刷题记录-26 图论 (3)最小生成树
    一、prim算法精讲53.寻宝解题思路最小生成树是所有节点的最小连通子图,即:以最小的成本(边的权值)将图中所有节点链接到一起。图中有n个节点,那么一定可以用n-1条边将所有节点连接到一起。那么如何选择这n-1条边就是最小生成树算法的任务所在。例如本题示例中的无......
  • 20240904_132638 mysql 填空题 备份与恢复
    备份数据,以root用户身份,提示输入密码后,将my_school数据库的所有结构和数据导出为SQL语句,并将这些SQL语句保存到当前目录下的bf.sql文件中mysqldump-uroot-pmy_school>bf.sql恢复数据,以root用户的身份连接到MySQL服务器,然后执行bf.sql的命令把数据恢复到my_s......
  • 2024年“羊城杯”粤港澳大湾区网络安全大赛 初赛 Web&数据安全&AI 题解WriteUp
    文章首发于【先知社区】:https://xz.aliyun.com/t/15442LyricsForYou题目描述:Ihavewrotesomelyricsforyou…开题。看一下前端源码,猜测有路径穿越漏洞http://139.155.126.78:35502/lyrics?lyrics=../../../../../etc/passwd简单看一下环境变量,没有flag。扫......
  • Lcode算法26:队列实现栈
    请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:voidpush(intx) 将元素x压入栈顶。intpop() 移除并返回栈顶元素。inttop() 返回栈顶元素。booleanempty() 如果栈是空的,返回 true ;否则,返回......
  • 20240904_122638 mysql 填空题 dcl
    记录用户帐户密码的数据表,保存在哪个数据库中mysql记录用户帐户密码的数据表,叫什么名字user创建了一个名为pyhui的用户,该用户只能从本地机器连接到MySQL服务器,并且其密码是abccreateuser'pyhui'@'localhost'identifiedby'abc'删除名为pyhui的用户,该用户只能从localho......
  • 20240904_112638 mysql 填空题 事务
    开启事务starttransaction提交事务commit回滚事务rollback事务中创建一个名为c的存档点savepointc事务中回到名为m的存档点savepointm设置自动提交打开setautocommit=1设置自动提交关闭setautocommit=0......
  • CSP-J初赛知识点总复习( 3.3链式栈 3.4链式队列3.5链表习题)
    链式栈:(代码)#include<bits/stdc++.h>usingnamespacestd;//栈元素structStack{intdata;structStack*next;};Stack*top=NULL;//栈顶指针//入栈voidpush(intx){Stack*p=newStack;p->data=x;p->next=top;top=p;//修......
  • CSP2024 to do list...
    马上CSP了,感觉得开始培养状态了。哈希练习Tarjan初步学习+刷题大模拟练习:鸭棋+猪国杀S组初赛,选择题部分,刷整卷至少3套。树状数组练习:DX视频线段树优化dp练习贪心练习,普及组重点训练2017以来的普及组真题T3T4表达式树练习数学优化枚举练习背包专......
  • CSP2024-14
    A题意:给定一张边权为正的无向图,\(k\)条关建边,求从\(1\)经过所有关建边回到\(1\)的最短路。\(k\le12\)。所有关键边的端点加上\(1\)也就\(25\)个,\(f(x,S)\)表示当前在\(x\),已经经过的关键边集合为\(S\)的最短路,随便转移。傻逼人干傻逼事,最短路不开longlong调......
  • 使用ESP8266-01s的一些知识点
    在这里发表自己并记录自己在做项目的一些问题以及注意事项关于ESP8266通过API接口物联网技术获取当前天气以及当前时间的步骤:1.AT (进入AT指令模式)应答:OK2.AT+CWMODE=1 (设置为STA模式)应答:OK//设置工作模式1:station模式2:AP模式3:兼容AP+station模式3.AT+RS......