蓝桥杯备考3

P8196 [传智杯 #4 决赛] 三元组

题目描述

给定一个长度为 n 的数列 a,对于一个有序整数三元组 (i,j,k),若其满足 1≤i≤j≤k≤n 并且a_{i}+a_{j}=a_{k},则我们称这个三元组是「传智的」。

现在请你计算,有多少有序整数三元组是传智的。

输入格式

本题单测试点内有多组测试数据

输入的第一行是一个整数 T,表示数据组数。

对于每组数据:

第一行是一个整数,表示数列的长度 n。
第二行有 n 个整数,第 i 个整数表示 a_{i}

输出格式

对于每组数据,输出一行一个整数表示答案。

输入输出样例

输入 #1复制

2
3
1 2 3
5
1 2 3 4 5

输出 #1复制

2
6

说明/提示

样例 1 解释

对于第一组数据,因为 ​,a_{1}+a_{1}=a_{2},a_{1}+a_{2}=a_{3}​,故共 (1,1,2)(1,1,2) 和 (1,2,3)(1,2,3) 两个三元组。
对于第二组数据六个三元组分别是:

  • (1,1,2)(1,1,2)
  • (1,2,3)(1,2,3)
  • (1,3,4)(1,3,4)
  • (1,4,5)(1,4,5)
  • (2,2,4)(2,2,4)
  • (2,3,5)(2,3,5)

数据规模与约定

对于全部测试点,保证 1≤T≤100,1≤n,a_{i}​≤100,且各个测试点的n 之和不超过 100,即∑n≤100。

代码

#include<iostream>
#include<vector>
using namespace std;
int main()
{
	
	int T;
	cin>>T;
	vector <int>arr(T,0);
	
	for(int i=0;i<T;i++)
	{
		int n;
		cin>>n;
		vector <int>num(n);
		for(int t=0;t<n;t++)
			cin>>num[t];//输入数据 
		
		
		for(int t=n-1;t>-1;t--)
		{
			for(int j=t-1;j>-1;j--)
			{
				if(num[j]*2==num[t])
				{
					arr[i]++;
				}
				for(int q=j-1;q>-1;q--)
				{
					if(num[j]+num[q]==num[t])arr[i]++;
				}
			}

		}	
	}
	for(int i=0;i<T;i++)
	{
		cout<<arr[i]<<endl;
	}
	return 0;
}

P8195 [传智杯 #4 决赛] 小智的疑惑

题目描述

传智专修学院给了小智一个仅包含小写字母的字符串 s,他想知道,里面出现了多少次子串 chuanzhi 呢。

我们称一个字符串 t 是 s 的子串,当且仅当将 s 的开头若干个(可以为 0 个)连续字符和结尾若干个(可以为 0 个)连续字符删去后,剩下的字符串和 t 相同。例如,我们称 ab 是 abc 的子串,但 ac 不是 abc 的子串。

输入格式

输入只有一行一个字符串,表示字符串 s。

输出格式

输出一行一个整数表示答案。

输入输出样例

输入 #1        welcometochuanzhicupchuanzhi

输出 #1        2

说明/提示

数据规模与约定

对于全部的测试点,1≤∣s∣≤4×10 ^{5},∣s∣ 表示 s 的长度,且 s 中只有小写字母。

代码

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string arr;
	cin>>arr;
	int num=0;
	for(int i=0;i<arr.size();i++)
	{
		if(arr[i]=='c'&&arr[i+1]=='h'&&
		arr[i+2]=='u'&&arr[i+3]=='a'&&
		arr[i+4]=='n'&&arr[i+5]=='z'&&
		arr[i+6]=='h'&&arr[i+7]=='i')
			num++;
	}
	cout<<num;				
	return 0;			
}

P8869 [传智杯 #5 初赛] A-莲子的软件工程学

题目背景

在宇宙射线的轰击下,莲子电脑里的一些她自己预定义的函数被损坏了。

对于一名理科生来说,各种软件在学习和研究中是非常重要的。为了尽快恢复她电脑上的软件的正常使用,她需要尽快地重新编写这么一些函数。

题目描述

具体而言,给定两个整数 a,b,保证 b\neq0。莲子要实现这样一个函数 fun(a,b) 来将 b 的符号转移到 a 上。

具体而言,ffun(a,b)=sgn(b)×∣a∣。其中,

换而言之:

  • 如果 b 是正数,那么 fun(a,b)=+∣a∣=∣a∣;
  • 如果 �b 是负数,那么 fun(a,b)=−∣a∣。

输入格式

  • 共一行两个整数a,b。

输出格式

  • 共一行一个整数 fun(a,b) 的值。

输入输出样例

输入 #1        -1 2

输出 #1        1        

输入 #2        0 -4

输出 #2        0

输入 #3        -12345 -54321

输出 #3        -12345

说明/提示

对于全部数据,保证 a,b 在 32位有符号整型范围内,并且 b≠0。

代码

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
	long long int a,b;
	cin>>a>>b;
	a=abs(a);
	if(b>0)cout<<a;
	if(b<0)cout<<(-1)*a;

	return 0;
}

P9203 时效「月岩笠的诅咒」

题目背景

蓬莱之药,被诅咒的不死之药。

奉命将蓬莱之药投入富士山中销毁的月岩笠,最终打算把蓬莱之药改投入八岳销毁。在下山途中妹红将其踹下山,抢到了蓬莱之药。

那已经是千年前的事情了。

题目描述

时间节点上发生过的两件事情的时间可被看作两实数 a,b。我们称两个事件满足「周年」关系,当且仅当可以通过执行以下两种操作(可以 0 次)使其相等:

  • 将 a 加上 1,即 a←a+1;
  • 将 b 加上 1,即 b←b+1。

现在给定实数 a,b,询问它们是否满足「周年」。

输入格式

输入共一行两个实数 a,b。输入保留到小数点后 12 位。

输出格式

输出共一行。如果存在合法方案,输出 YES,否则输出 NO。

输入输出样例

输入 #1复制

100.000000000000 999999.000000000000

输出 #1        YES

输入 #2        114.123456789000 514.123456789000

输出 #2        YES

输入 #3        0.333333333333 0.333333333334

输出 #3        NO

说明/提示

对于全部数据,保证 0<a,b≤10^{9}

代码

#include<iostream>
#include<string>
using namespace std;
int main()
{
	int a,b;
	char c1,c2;
	string a1,b1;
	cin>>a>>c1>>a1>>b>>c2>>b1; 
	if(a1==b1)cout<<"YES";
	else cout<<"NO";
	return 0;
}

  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值