P8196 [传智杯 #4 决赛] 三元组
题目描述
给定一个长度为 n 的数列 a,对于一个有序整数三元组 (i,j,k),若其满足 1≤i≤j≤k≤n 并且 ,则我们称这个三元组是「传智的」。
现在请你计算,有多少有序整数三元组是传智的。
输入格式
本题单测试点内有多组测试数据。
输入的第一行是一个整数 T,表示数据组数。
对于每组数据:
第一行是一个整数,表示数列的长度 n。
第二行有 n 个整数,第 i 个整数表示 。
输出格式
对于每组数据,输出一行一个整数表示答案。
输入输出样例
输入 #1复制
2
3
1 2 3
5
1 2 3 4 5
输出 #1复制
2
6
说明/提示
样例 1 解释
对于第一组数据,因为 , , ,故共 (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, ≤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× ,∣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 0。莲子要实现这样一个函数 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≤ 。
代码
#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; }