21-22(2)第三次线上赛

21-22(2)第三次线上赛
  • 有些题目可能有c++版本和py版本
一、TQL的二年级数学
描述

已知有3个整数a、b、c,TQL想要知道是否可以在a和b之间添加一个四则运算符号(加减乘除),使得运算结果等于c。

注意:

(1)必须a在前b在后

(2)b为负数时,可以在b外面加一对小括号,以符合数学规范

(3)除法是数学意义上的除法,因而5/2=2.5

输入

多组案例。一个正整数n,表示案例的数量。(n<=100)

每组案例由3个整数a、b、c组成。(绝对值均不大于1e9)

输出

针对每组案例,如果可以通过添加一个四则运算符号,让a、b的运算结果为c,那么输出Yes,否则输出No。

每组案例输出完要换行。

样例输入

3
5 3 15
5 3 1
3 5 2

样例输出

Yes

No

No

code:
#include<bits/stdc++.h>
using namespace std;
int main() {
    int n;
    cin>>n;
    while(n--){
        double a,b,c;//除法不是整除,干脆用double来存
        cin>>a>>b>>c;
        double ans1=a+b,ans2=a-b,ans3=a*b,ans4=a/b;
        if(ans1==c||ans2==c||ans3==c||ans4==c)//四种情况。
            puts("Yes");
        else puts("No");
    }
}
n = eval(input())#这题用py写的好处是不会溢出,除法就是正常的除法
while n:
    n -= 1
    a, b, c = map(int, input().split())
    if a + b == c or a - b == c or a * b == c or b != 0 and a / b == c:
        print('Yes')
    else:
        print('No')

二、涂涂的小黄鸭
描述

涂涂驾驶一艘游艇以相对于静水恒定的速度在河水里逆流行驶,水流速度小于游艇的速度,在经过一座桥的时候小黄鸭不慎掉落水中,过了t秒时间后,涂涂发现小黄鸭不见了,这时候船已经距离桥s1米。涂涂这时候调头向下游行驶,顺流而下了s2米之后终于追上了小黄鸭。

问涂涂从发现小黄鸭不见到追上小黄鸭,一共花费了多少秒?

输入

多组案例。一个正整数n,表示案例的数量。(n<=100)

每组案例由3个正整数t、s1、s2组成。(均不大于10000,s2保证大于s1)

输出

针对每组案例,输出一个整数,表示涂涂从发现小黄鸭不见到追上小黄鸭,一共花费了多少秒。如果这个数不是整数,那么输出其整数部分。

每组案例输出完都要换行。

样例输入

2
5 10 20
3 10 17

样例输出

自己算

code:
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    while(n--){
        int t,s1,s2;
        cin>>t>>s1>>s2;
        cout<<t<<endl;//解方程发现答案就是t
    }
}
n = eval(input())
while n:
    n -= 1
    t, s1, s2 = map(int, input().split())
    print(t)

三、TQL的四年级数学
描述

TQL和LYF在玩一个放硬币的游戏。有一个长方形的电脑桌,桌子的长和宽分别为a和b,硬币的直径是c。每个人依次放一个硬币,硬币不能重叠放置,一点点重叠都不行。如果轮到某个人放不下硬币了,那么那个人就输了。已知TQL先放,问最后的胜利者是谁?

输入

多组案例。一个正整数n,表示案例的数量。(n<=100)

每组案例由3个正整数a、b、c组成。(a、b<=10000, c<=100)

输出

针对每组案例,输出一个字符串,表示胜利者的名字。

每组案例输出完要换行。

样例输入

2
30 20 5
5 5 10

样例输出

TQL

LYF

code:
//TQL先手将硬币放在桌子中间,之后LYF每放一个硬币,TQL在其中心对称位置摆 放硬币既能必胜。所以TQL能放下第一个硬币就能获胜。
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        int a,b,c;
        cin>>a>>b>>c;
        if(a>=c&&b>=c)puts("TQL");
        else puts("LYF");
    }
}
n = eval(input())
while n:
    n -= 1
    a, b, c = map(int, input().split())
    if a >= c and b >= c:
        print('TQL')
    else:
        print('LYF')

四、TQL的七年级生物
描述

TQL在做生物实验时发现,一种名叫高鼠的生物是单性繁殖生物,在繁殖后代时存在一定的规律。可以用一个字符串c1表示一只高鼠的遗传基因,它生成的下一代遗传基因用字符串c2表示,规则为:

(1)如果字符串a是c1的子串,那么把c1中的第一次出现的子串a替换成另一个子串b,生成c2;

(2)如果字符串a不是c1的子串,那么c2与c1相等。

例如c1=“ABCABCD”,a=“AB”,b=“Z”,则c2=“ZCABCD”。

现在已知一只第1代袋鼠的遗传基因字符串c1和a、b,问由它生成的第2代袋鼠的遗传基因c2是什么?

输入

多组案例。一个正整数T,表示案例的数量。(T<=100)

每组案例中由3个字符串c1、a、b组成。数据规模满足:

(1)c1长度不超过100

(2)a和b的长度均不超过10

(3)b的长度不超过a

(4)a、b是不同的字符串

(5)c1、a、b都是由纯大写英文字母组成

输出

针对每组案例,输出一个字符串,表示第2代袋鼠的遗传基因c2的值。

每组案例输出完要换行。

样例输入

3
DABCABCD AB Z
DABCABCD AD Z
DAAAAAAA AA A

样例输出

DZCABCD

DABCABCD

DAAAAAA

code:
#include<bits/stdc++.h>
using namespace std;
int main() {
    int T;
    cin>>T;
    while(T--){
        string c1,a,b;
        cin>>c1>>a>>b;
        if(c1.find(a)==c1.npos)//没有找到
            cout<<c1<<endl;
        else{//找到了改变字符串
            int pos=c1.find(a);
            string c=c1.substr(0,pos);
            c+=b;
            c+=c1.substr(pos+a.size());
            cout<<c<<endl;
        }
    }
}
T = eval(input())
while T:
    T -= 1
    c1, a, b = input().split()
    if a in c1:#有子串就改变
        c1 = c1.replace(a, b, 1)
    print(c1)

五、TQL的八年级生物
描述

TQL在做生物实验时发现,一种名叫线性袋鼠的生物是单性繁殖生物,在繁殖后代时有可能会在某处产生变异,变异规则如下:遗传基因可以看成一个字符串c,变异因子可以看成另一个字符串a,如果c中的某处有子串a,那么这就是一个可能产生变异的位置;因为后代不至于变化太大,所以有且仅有一个位置产生变异。TQL想要知道这只袋鼠到底有几个位置有可能产生变异。

例如遗传基因c=“ABCABCD”,变异因子a=“AB”,因为c中有两个位置的子串等于a,故答案是2。

输入

多组案例。一个正整数T,表示案例的数量。(T<=100)

每组案例中由2个字符串c、a组成,其中c表示袋鼠的遗传基因,a表示变异因子。(c的长度不大于1e6,a的长度不大于1e5,a的长度不大于c的长度)

输出

针对每组案例,输出一个整数,表示可能产生变异的位置数量。

每组案例输出完要换行。

样例输入

3
ABCABCD AB
DABABCD AD
AAAAAAA AA

样例输出

2

0

6

code:
#include<bits/stdc++.h>
using namespace std;
void calNext(char p[],int Next[])
{
    int len=strlen(p),i=0,j=-1;
    Next[0]=-1;
    while(i<len){
        if(j==-1||p[i]==p[j])Next[++i]=++j;
        else j=Next[j];
    }
}
int kmp(char a[],string b,int Next[]){
    int lenA=strlen(a),lenB=b.size();
    int i=0,j=0,cnt=0;
    while(i<lenA){
        if(j==-1||a[i]==b[j])
            i++,j++;
        else j=Next[j];
        if(j==lenB){
            cnt++;
            j=Next[j-1];
            i--;
        }
    }
    return cnt;
}
int Next[100014];
char c[1000015],a[100015];
int main(){
    int T;
    cin>>T;
    while(T--){
        scanf("%s%s",&c,&a);
        calNext(a,Next);
        cout<<kmp(c,a,Next)<<endl;
    }
}
六、TQL的七年级地理
描述

TQL在学习地理的过程中查阅了许多城市的经纬度,并且还知道地球上新的一天以国际日期变更线开始。TQL希望能把这些城市做个整理,按照春分或者秋分时太阳照耀大地的先后顺序依次排列城市。

输入

只有一组案例。

每组案例先是一个正整数n,表示城市的数量,(n<=100)

然后每行是一个城市的信息,由3个不含空格的字符串组成,分别是城市的名字、城市的纬度、城市的经度。(保证不会有城市在南极点、北极点或者国际日期变更线上)

输出

针对每组案例,按【问题描述】中规定的顺序依次输出每个城市的名字,两个城市名字之间要有一个空格。

如果有两个城市按照规定的顺序是并列的,那么优先输出城市名字字符串的值比较小的(注意不是指字符串长度)。

不要换行。

样例输入

5
Xiamen 24.26N 118.04E
Beijing 39.56N 116.2E
London 51.3N 0.1E
NewYork 40.43N 74W
Sydney 33.52S 151.13E

样例输出

Sydney Xiamen Beijing London NewYork

code:
#include<bits/stdc++.h>
using namespace std;
typedef pair<string,double>psb;
bool cmp(psb a,psb b){//排序的定义,由经度来排序,经度相同由名字来排序。
    return a.second>b.second||a.second==b.second&&a.first<b.first;
}
int main(){
    int n;
    cin>>n;
    vector<psb>v;
    while(n--){
        string name,lat,lon;
        cin>>name>>lat>>lon;
       stringstream ss(lon.substr(0,lon.size()-1));
       double a;
       ss>>a;
       if(lon[lon.size()-1]=='W')a=-a;//如果是西经那么把它变成负的便于排序
       v.push_back({name,a});//存入名字和经度
    }
    sort(v.begin(),v.end(),cmp);
    bool f=0;
    for(auto it:v){
        if(f)
            cout<<' ';
        else
            f=1;
        cout<<it.first;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值