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,保证 b0。莲子要实现这样一个函数 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;
}