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

发布时间 2023-07-12 14:30:44作者: 寒心小呆

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

开始时间2023-07-12 11:53:19

结束时间2023-07-12 14:23:43

前言:我把那条路又走了一遍。

L1-071 前世档案

一、题目编号及题目说明

 

二、程序功能测试及说明

根据输入的一组二进制字符串,将其转换为十进制数并输出。

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

程序首先读取两个整数n和m,然后使用for循环m次。在每次循环中,程序读取一个长度为n的二进制字符串s。

接下来,程序使用一个内层for循环,从字符串的最后一个字符开始遍历。如果当前字符为'n',则将sum增加2的nb次方,然后将nb乘以2。

最后,程序使用printf函数输出每个转换后的十进制数sum。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,m;
    cin>>n>>m;
    int i=0,j=0;
    for(i=0;i<m;i++)
    {
        string s;
        cin>>s;
        int sum=1,nb=1;
        for(j=n-1;j>=0;j--)
        {
            if(s[j]=='n')
            {
                sum+=nb;
            }
                nb*=2;
        }
        printf("%d\n",sum);
    }
    return 0;
}

五、题目评分

 L1-072 刮刮彩票

一、题目编号及题目说明

二、程序功能测试及说明

根据输入的二维数组和选择,计算并输出对应的金额。

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

程序首先定义了一些变量,包括sum、ssum和choice。然后使用两个嵌套的for循环读取一个3x3的二维数组a,并累加求得sum。 接下来,程序计算ssum(45减去sum),并再次使用两个嵌套的for循环,将数组a中的0替换为ssum。 然后,程序使用一个for循环,读取三组整数n和m,并输出数组a中索引为(n, m)的值。 继续读取choice,然后使用switch语句根据choice的值计算sum。根据sum的值,程序从money数组中找到对应的金额并输出。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int sum=0,ssum=45,choice;
    int a[4][4];
    for(int i=1;i<4;i++){
        for(int j=1;j<4;j++){
            cin>>a[i][j];
            sum+=a[i][j];
        }
    }
    ssum=ssum-sum;
    for(int i=1;i<4;i++){
        for(int j=1;j<4;j++){
            if(a[i][j]==0)
             a[i][j]=ssum;
        }
    }
    for(int i=1;i<=3;i++){
        int n,m;
        cin>>n>>m;
        cout<<a[n][m]<<endl;
    }
    cin>>choice;
    sum=0;
    switch(choice){
        case 1:sum=a[1][1]+a[1][2]+a[1][3];break;
        case 2:sum=a[2][1]+a[2][2]+a[2][3];break;
        case 3:sum=a[3][1]+a[3][2]+a[3][3];break;
        case 4:sum=a[1][1]+a[2][1]+a[3][1];break;
        case 5:sum=a[1][2]+a[2][2]+a[3][2];break;
        case 6:sum=a[1][3]+a[2][3]+a[3][3];break;
        case 7:sum=a[1][1]+a[2][2]+a[3][3];break;
        case 8:sum=a[1][3]+a[2][2]+a[3][1];break;
    }
    int money[25]={0,0,0,0,0,0,10000,36,720,360,80,252,108,72,54,180,72,180,119,36,306,1080,144,1800,3600};
    cout<<money[sum]<<endl;
}

五、题目评分

 L1-073 人与神

一、题目编号及题目说明

二、程序功能测试及说明

它会输出一句名言:"To iterate is human, to recurse divine."(迭代是人类的本能,递归是神圣的)。

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

程序使用了printf函数将字符串打印到标准输出,并在结尾处使用return 0表示程序正常结束。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    printf("To iterate is human, to recurse divine.\n");
    return 0;
    
}

五、题目评分

 L1-074 两小时学完C语言

一、题目编号及题目说明

二、程序功能测试及说明

它会从标准输入读取三个整数a、b和c。然后,它计算并输出sum=a-b*c的值。

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

程序首先使用cin语句将输入的三个整数存储在变量a、b和c中。然后,它计算sum=a-b*c的结果,并使用printf函数将结果输出到标准输出。最后,程序使用return 0表示程序正常结束。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,b,c;
    cin>>a>>b>>c;
    int sum=a-b*c;
    printf("%d\n",sum);
    return 0;
}

五、题目评分

 L1-075 强迫症

一、题目编号及题目说明

二、程序功能测试及说明

用于根据输入的字符串s判断日期格式并输出标准的年月表示。

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

程序首先使用cin语句读取字符串s,并使用s.length()函数获取字符串的长度l。

接下来,程序定义了一些变量,包括y1、y2、year、m1、m2和mon。然后,根据字符串的长度进行条件判断。

如果字符串长度为4(假设为yyMM格式),则根据字符串中的每个字符计算年份和月份。将字符转换为数字,通过简单的数学运算得到年份的值。若年份小于22,则将其视为2000年之后的年份,否则视为1900年之后的年份。然后,将字符串中的第3和第4个字符作为月份,并使用printf函数输出标准格式的年月。

如果字符串长度不是4(假设为MMdd格式),则直接使用printf函数输出原始格式的年月。

最后,由于前面的注释指示以及测试代码已被注释掉,所以它们不会影响程序的运行。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    cin>>s;
    int l=s.length();
    int y1,y2,year,m1,m2,mon;
    //printf("%d\n",l);测试l
    if(l==4)
    {
        
        y1=s[0]-'0';
        y2=s[1]-'0';
        year=y1*10+y2;
        if(year<22)
        {
            year=2000+year;
        }
        else{
            year+=1900; 
        }
        m1=s[2]-'0';
        m2=s[3]-'0';
        mon=m1*10+m2;
        printf("%d-%c%c",year,s[2],s[3]);
    }
    else{
        printf("%c%c%c%c-%c%c",s[0],s[1],s[2],s[3],s[4],s[5]);
    }
    //printf("%d\n",year);测试年
}

五、题目评分

 L1-076 降价提醒机器人

一、题目编号及题目说明

二、程序功能测试及说明

用于判断一组数字中是否有小于给定值b的数字,并输出小于b的数字以及标志信息。

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

程序首先使用cin语句读取两个浮点数a和b。然后,定义了一些变量,包括i、c和一个循环变量i的初始值为0。

接下来,程序使用for循环迭代a次,每次迭代都会使用cin语句读取一个浮点数c。然后,使用条件判断语句if判断c是否小于给定值b。如果满足条件,则使用printf函数输出"On Sale! "以及c的值,并保留一位小数。

最后,程序使用return 0表示程序正常结束。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    float a,b;
    cin>>a>>b;
    float i=0,c;
    for(i=0;i<a;i++)
    {
        cin>>c;
        if(c<b)
        {
            printf("On Sale! %.1f\n",c);
        }
    }
    return 0;
}

五、题目评分

 L1-077 大笨钟的心情

一、题目编号及题目说明

二、程序功能测试及说明

用于判断给定的一组数据中,是否满足一定条件,并输出相应的结果。

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

程序首先定义了一些变量,包括i、a(一个包含24个元素的整型数组)以及一个循环变量i的初始值为0。

接下来,程序使用for循环迭代24次,每次迭代都使用cin语句读取一个整数,并将其存储在数组a中。

然后,程序使用另一个for循环迭代1000000次,每次迭代都使用cin语句读取一个整数m,并进行一系列条件判断操作。

如果m小于0或大于23,则使用break语句退出循环。

否则,程序根据数组a中对应索引位置m的值进行条件判断。如果a[m]大于50,则使用printf函数输出"a[m] Yes",其中a[m]代表数组a中索引位置m的值。

如果a[m]不大于50,则使用printf函数输出"a[m] No"。

最后,程序使用return 0表示程序正常结束。

注意:m>23为非合法,若写>24第二测试点会运行超时。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int i=0;
    int a[24]={0};
    for(i=0;i<24;i++)
    {
        cin>>a[i];
    }
    for(i=0;i<1000000;i++)
    {
        int m;
        cin>>m;
        if(m<0||m>23)
        {
            break;
        }
        if(a[m]>50)
        {
            printf("%d Yes\n",a[m]);
        }
        else{
            printf("%d No\n",a[m]);
        }
    }
    return 0;
}

五、题目评分

 L1-078 吉老师的回归

一、题目编号及题目说明

二、程序功能测试及说明

用于判断一个字符串中是否包含特定的子串,并且统计满足条件的字符串个数。

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

程序首先定义了一些变量,包括n、m、cnt(分别代表整型变量、整型变量、整型变量),并进行初始化。

接下来,程序使用cin语句分别读取两个整数n和m,然后使用getchar()函数读取换行符。

然后,程序使用for循环迭代n次,每次迭代都会使用getline(cin, s)语句读取一行字符串,并将其存储在变量s中。

在循环内部,程序使用if语句判断字符串s中是否同时不包含"qiandao"和"easy"两个子串。如果满足条件,则对变量cnt进行累加,并使用if语句判断cnt是否等于m+1。如果满足条件,则输出字符串s。

最后,程序使用if语句判断cnt是否小于等于m。如果满足条件,则输出"Wo AK le"。

四、程序源代码

 #include<bits/stdc++.h>
  using namespace std;
  int n,m;
  int cnt;//统计做过的不简单的题个数 
  int main() {
      cin>>n>>m;
      getchar();
      for(int i=0; i<n; i++) 
      {
         string s;
         getline(cin,s);
         if(s.find("qiandao")==s.npos&&s.find("easy")==s.npos) //判断是否含有“easy"与"qiandao" 
        {
            cnt++;
             if(cnt==m+1)//如果吉老师做到了已做过的题的下一个 
             {
                 cout<<s<<endl;//这是吉老师正在做的题 
             }
         }
     }     if(cnt<=m)//在这个范围内就AK; 
         cout<<"Wo AK le\n";
    return 0;
 } 

五、题目评分

 总结:今天完成了71~78,l1快告一段落了,还认识一位只比我大一届的学长,很强啊,唉,我又开始焦虑了。

每日一mo:“如何创造一个主角?”“给他一个悲惨的童年,再给他一点点的爱。”“如何创造一个反派?”“那就夺走那一点点的爱。”

----------------------------

来自于梦柳在歌曲<<少年你也怀疑自己不是主角了吗>>的酷狗评论