用天梯赛打开暑假生活的第十六天

发布时间 2023-07-30 01:52:55作者: 寒心小呆

从坐牢到入门的程序设计(16)

开始时间2023-07-29 13:53:38

结束时间2023-07-30 01:44:50

前言:今天的目标——结束L1!!!

 L1-087 机工士姆斯塔迪奥

一、题目编号及题目说明

二、程序功能测试及说明

根据输入的n、m、q和一系列数组元素的值,该代码将计算满足条件的元素个数,并输出结果。

三、程序设计思路及结构说明

  1. 定义变量h和l,并初始化为0,用于记录满足条件c为0和1的元素个数。
  2. 输入n、m、q的值。
  3. 定义长度为5的整型数组a和b,并初始化为0。
  4. 定义变量c、d和j,并初始化为0。
  5. 定义长度为q的整型数组z和x,并定义变量nb并初始化为0。
  6. 使用循环遍历q次,读取每次的输入值c,并根据条件c的不同进行相应的处理。
    • 如果c为0,读取z[i]的值,并通过另一个循环判断z[i]是否与之前的元素重复,如果不重复则增加h的值。
    • 如果c为1,读取x[i]的值,并通过另一个循环判断x[i]是否与之前的元素重复,如果不重复则增加l的值。
  7. 计算sum的值,即(n-h)*(m-l)。
  8. 使用printf输出sum的值。
  9. 返回0,表示程序正常结束。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int h=0,l=0;
    int n,m,q,i=0;
    cin>>n>>m>>q;
    int a[5]={0},b[5]={0};
    int c,d,j=0;
    int z[q],x[q],nb=0;
    for(i=0;i<q;i++)
    {
        nb=0;
        cin>>c;
        if(c==0)
        {
            scanf("%d",&z[i]);
                for(j=0;j<i;j++)
                {
                    if(z[i]==z[j])
                    {
                        nb=1;
                    }
                }
            if(nb!=1)
            {
                h++;
            }
        }
        if(c==1)
        {
            scanf("%d",&x[i]);
                for(j=0;j<i-1;j++)
                {
                    if(x[i]==x[j])
                    {
                        nb=1;
                    }
                }
            if(nb!=1)
            {
                l++;
            }
        }
    }
    long long int sum=0;
    sum=(n-h)*(m-l);
    printf("%lld\n",sum);
    return 0;
}

五、题目评分

 L1-088 静静的推荐

一、题目编号及题目说明

二、程序功能测试及说明

根据输入的数据,该代码将统计满足条件的人数,并输出结果。

三、程序设计思路及结构说明

  1. 定义变量n、s、k和长度为300的整型数组a。
  2. 输入n、k和s的值。
  3. 定义变量ans,并初始化为0,用于记录满足条件的人数。
  4. 使用循环遍历n次,读取每次的输入值t和p,并根据条件对其进行判断。
    • 如果t大于等于175,根据条件1执行以下操作:
      • 如果p大于等于s,根据条件3将ans增加1。
      • 否则,根据条件3将对应天梯赛成绩t的人数a[t]增加1。
  5. 使用循环遍历i从175到290,根据条件2将ans增加min(a[i], k)。
  6. 使用cout输出ans的值。
  7. 返回0,表示程序正常结束。

四、程序源代码

#include <bits/stdc++.h>
using namespace std;
int n,s,k,a[300];//用于记录同一个分数有多少人 
int main(){
    cin>>n>>k>>s;
    int ans=0;
    while(n--){
        int t,p;
        cin>>t>>p;
        if(t>=175)//根据1,刷掉天梯赛成绩小于175的同学学 
        {
            if(p>=s)//根据3,天梯赛>=175&& pat>=s 
            ans++;
            else//根据3,记录天梯赛成绩为t的同学有多少人 
            {
                a[t]++;
            }
        } 
    }
    for(int i=175;i<=290;i++){
        ans+=min(a[i],k);//根据2,求出同一个分数段的同学有多少可以录用 
    }
    cout<<ans;
    return 0;
}

五、题目评分

 L1-089 最好的文档

一、题目编号及题目说明

二、程序功能测试及说明

这段代码非常简单,它只包含一个输出语句。代码的功能是输出一句话。

 

三、程序设计思路及结构说明

    • 使用printf函数输出字符串 "Good code is its own best documentation."。
    • 返回0,表示程序正常结束。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    printf("Good code is its own best documentation.\n");
}

五、题目评分

 L1-090 什么是机器学习

一、题目编号及题目说明

二、程序功能测试及说明

根据输入的a和b的值,该代码将计算并输出a1、a2、a3、a4的值。每个结果占一行

三、程序设计思路及结构说明

  1. 定义变量a、b,并使用cin读取两个整数的值。
  2. 定义变量a1、a2、a3、a4,并根据给定的公式进行计算。
    • a1 = a + b - 16
    • a2 = a + b - 3
    • a3 = a + b - 1
    • a4 = a + b
  3. 使用printf输出变量a1、a2、a3、a4的值,并使用换行符分隔。
  4. 返回0,表示程序正常结束。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,b;
    cin>>a>>b;
    int a1,a2,a3,a4;
    a1=a+b-16;
    a2=a+b-3;
    a3=a+b-1;
    a4=a+b;
    printf("%d\n%d\n%d\n%d",a1,a2,a3,a4);
    return 0;
}

五、题目评分

 L1-091 程序员买包子

一、题目编号及题目说明

二、程序功能测试及说明

根据输入的n、x、m和k的值,该代码将根据条件判断,输出相应的结果。结果包括:"mei you mai "、"kan dao le mai "或者 "wang le zhao mai ",然后输出字符串变量x,最后输出字符串 " de"。

三、程序设计思路及结构说明

  1. 定义变量n、m、k和字符串变量x,并使用cin读取n、x、m和k的值。
  2. 使用if-else语句进行条件判断:
    • 如果k等于n,输出 "mei you mai "。
    • 否则,如果k等于m,输出 "kan dao le mai "。
    • 否则,输出 "wang le zhao mai "。
  3. 使用cout输出字符串变量x。
  4. 使用printf输出字符串 " de\n"。
  5. 返回0,表示程序正常结束。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,m,k;
    string x;
    cin>>n>>x>>m>>k;
    if(k==n)
    {
        printf("mei you mai ");
    }
    else if(k==m){
        printf("kan dao le mai ");
    }
    else{
        printf("wang le zhao mai ");
    }
    cout<<x;
        printf(" de\n");
}

五、题目评分

 L1-092 进化论

一、题目编号及题目说明

二、程序功能测试及说明

根据输入的n以及每组a、b、c的值,该代码将循环执行条件判断,并输出相应的结果:"Lv Yan"、"Tu Dou"或者 "zhe du shi sha ya!"。每行输出一个结果。

 

三、程序设计思路及结构说明

  1. 定义变量n,并使用cin读取n的值。
  2. 定义变量i,并初始化为0。
  3. 使用for循环,设置循环变量i从0到n-1,每次循环执行以下步骤:
    • 定义变量a、b、c,并使用cin读取a、b、c的值。
    • 使用if-else语句进行条件判断:
      • 如果c等于a乘以b,输出 "Lv Yan"。
      • 否则,如果c等于a加b,输出 "Tu Dou"。
      • 否则,输出 "zhe du shi sha ya!"。
  4. 返回0,表示程序正常结束。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    int i=0;
    for(i=0;i<n;i++)
    {
     int a,b,c;
        cin>>a>>b>>c;
        if(c==(a*b))
        {
            printf("Lv Yan\n");
        }
        else if(c==(a+b))
        {
            printf("Tu Dou\n");
        }
        else{
            printf("zhe du shi sha ya!\n");
        }
    }
    return 0;
}

五、题目评分

 L1-093 猜帽子游戏

一、题目编号及题目说明

二、程序功能测试及说明

根据输入的n、数组a、k以及每组数组b的值,该代码将循环执行条件判断,并输出相应的结果:"Da Jiang!!!"或者 "Ai Ya"。每行输出一个结果。

 

三、程序设计思路及结构说明

  1. 定义变量n,并使用cin读取n的值。
  2. 创建一个大小为n的vector<int>数组a,并使用for循环将输入的n个整数存入数组a中。
  3. 定义变量k,并使用cin读取k的值。
  4. 使用for循环,设置循环变量i从0到k-1,每次循环执行以下步骤:
    • 创建一个大小为n的vector<int>数组b。
    • 定义变量nb为false,表示是否有不一致的投票结果。
    • 定义变量allAbstain为true,表示是否所有人都弃权。
    • 使用for循环,设置循环变量j从0到n-1,每次循环执行以下步骤:
      • 读取输入的整数,将其存入数组b中。
      • 如果b[j]不等于0,则将allAbstain设为false,表示有人投了票。
      • 如果b[j]不等于a[j],则将nb设为true,表示有人的投票结果与预期不一致。
    • 使用if-else语句进行条件判断:
      • 如果nb为false且allAbstain为false,输出 "Da Jiang!!!"。
      • 否则,输出 "Ai Ya"。
  5. 返回0,表示程序正常结束。

四、程序源代码

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n;
    cin >> n;
  
    vector<int> a(n);
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }

    int k;
    cin >> k;

    for (int i = 0; i < k; i++) {
        vector<int> b(n);
        bool nb = false;
        bool allAbstain = true;

        for (int j = 0; j < n; j++) {
            cin >> b[j];
            if (b[j] != 0) {
                allAbstain = false;
                if (b[j] != a[j]) {
                    nb = true;
                }
            }
        }

        if (!nb && !allAbstain) {
            cout << "Da Jiang!!!" << endl;
        } else {
            cout << "Ai Ya" << endl;
        }
    }

    return 0;
}

五、题目评分

 L1-094 剪切粘贴

一、题目编号及题目说明

二、程序功能测试及说明

根据输入的字符串s、整数n以及每组a、b、s1和s2的值,该代码将根据给定的规则对字符串s进行处理,并输出最终结果。

三、程序设计思路及结构说明

  1. 定义变量s,并使用cin读取字符串s的值。
  2. 定义变量n,并使用cin读取n的值。
  3. 定义变量a、b、s1和s2。
  4. 使用while循环,执行n次,每次循环执行以下步骤:
    • 使用cin读取a、b、s1和s2的值。
    • 根据给定的a和b,使用substr函数截取出s中的三部分:s3为起始位置到a-1的子串,s4为a到b之间的子串,s5为b之后的子串。
    • 将s更新为s3加上s5,表示删除了s中的s4子串。
    • 创建变量s6,将s1和s2连接起来。
    • 创建变量i和j,并初始化为0。
    • 创建变量f,用于标记是否找到匹配。
    • 使用while循环遍历字符串s,每次循环执行以下步骤:
      • 如果当前字符s[i]等于s6[j],则j加1。
      • 否则,j重置为0。
      • 如果j等于s6的长度,表示找到了完整的匹配,将f设为1,并跳出循环。
      • i加1。
    • 如果f为1,表示找到匹配:
      • 使用substr函数截取出s中的新三部分:s3为起始位置到i+1-s2的子串,s5为i+1-s2到末尾的子串。
      • 将s更新为s3加上s4加上s5,表示将匹配的位置替换为s4。
    • 否则,将s更新为s加上s4,表示在s的末尾添加s4。
  5. 使用cout输出最终的字符串s。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
 
int main()
{
    string s;
    cin>>s;
    int n;
    cin>>n;
    int a,b;
    string s1,s2;
    while(n--)
    {
        cin>>a>>b>>s1>>s2;
        string s3=s.substr(0,a-1);
        string s4=s.substr(a-1,b-a+1);
        string s5=s.substr(b);
        s=s3+s5;
        string s6=s1+s2;
        int i=0,j=0;
        int f=0;
        while(i<s.size())
        {
            if(s[i]==s6[j]) j++;
            else j=0;
            if(j==s6.size())
            {
                f=1;
                break;
            }
            i++;
        }
        if(f)
        {
            s3=s.substr(0,i+1-s2.size());
            s5=s.substr(i+1-s2.size());
            s=s3+s4+s5;
        }
        else s+=s4;
    }
    cout<<s<<endl;
}

五、题目评分

 L1-095 分寝室

一、题目编号及题目说明

二、程序功能测试及说明

根据输入的整数a、b和n,该代码将寻找满足条件的整数a1和b1,使得a除以a1和b除以b1的商的绝对值之差最小,并输出结果。如果没有满足条件的解,则输出"No Solution"。

三、程序设计思路及结构说明

  1. 定义变量a、b、n,并使用cin分别读取a、b和n的值。
  2. 定义变量a1和b1,并初始化为-1。
  3. 定义变量mn,并初始化为一个较大的值1000000,用来记录当前最小的绝对值之差。
  4. 使用for循环,遍历变量i从1到n-1,每次循环执行以下步骤:
    • 计算变量j的值,即n-i。
    • 检查以下三个条件:
      • a不等于i,且a能被i整除,b能被j整除,同时b不等于j;
      • 如果满足上述条件,则计算变量aa和bb的值,分别为a除以i和b除以j的商。
      • 计算变量res的值,为aa和bb之差的绝对值。
      • 如果当前的mn大于res,更新mn、a1和b1的值为res、i和j。
  5. 如果a1和b1仍然等于-1,表示没有找到满足条件的解,输出"No Solution"。
  6. 否则,输出a1和b1的值。
  7. 返回0,表示程序执行完毕。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int a,b,n;cin>>a>>b>>n;
    int a1=-1,b1=-1,mn=1000000;
    for(int i=1;i<=n-1;i++)
    {
        int j=n-i;
        if(a!=i && a%i==0 && b%j==0 &&b!=j)
        {
            int aa=a/i,bb=b/j,res=abs(aa-bb);
            if(mn>res) a1=i,b1=j,mn=res; 
        }
    } 
    if(a1==-1 && b1==-1) cout<<"No Solution";
    else cout<<a1<<" "<<b1;
    return 0;
}

五、题目评分

 L1-096 谁管谁叫爹

一、题目编号及题目说明

二、程序功能测试及说明

根据输入的整数n和每组a、b的值,该代码将比较每组整数a和b的各位数字之和,并根据比较结果输出字符"A"或"B"。

三、程序设计思路及结构说明

  1. 定义变量n,并使用cin读取n的值。
  2. 使用while循环,执行n次,每次循环执行以下步骤:
    • 定义变量sum1和sum2,并初始化为0,用来记录a和b的各位数字之和。
    • 使用cin读取a和b的值。
    • 定义变量a1和a2,并分别将a和b的值赋给它们,用于后续比较。
    • 使用while循环,计算a和b的各位数字之和,每次循环执行以下步骤:
      • 将a的个位数字加到sum1上,并将a除以10。
      • 将b的个位数字加到sum2上,并将b除以10。
    • 比较sum1和sum2的值:
      • 如果a1能被sum2整除且a2不能被sum1整除,则输出"A"。
      • 如果a2能被sum1整除且a1不能被sum2整除,则输出"B"。
      • 否则,比较a1和a2的值:
        • 如果a1大于a2,则输出"A"。
        • 如果a2大于a1,则输出"B"。
  3. 返回0,表示程序执行完毕。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    int sum1,sum2;
    int a,b;    
    while(n--)
    {sum1=0,sum2=0;
     cin>>a>>b;
     int a1,a2;
     a1=a,a2=b;
     while(a){sum1+=a%10;a/=10;}
     while(b){sum2+=b%10;b/=10;}
     if(a1%sum2==0&&a2%sum1!=0)
         printf("A\n");
     else if(a2%sum1==0&&a1%sum2!=0)
         printf("B\n");
     else{if(a1>a2)printf("A\n");
          else if(a2>a1)printf("B\n");
         }
    }
}

五、题目评分

 总结:L1篇结束!中间睡了个觉还吃了个庆功宴,呜呼呼,社团换届事真多,听说这届要整顿啊,唉,没办法。

每日一mo:那个女孩什么时候才知道我喜欢她.....