首页 > 其他分享 >用天梯赛打开暑假生活的第十天

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

时间:2023-07-04 21:55:08浏览次数:37  
标签:输出 暑假 int 矩阵 天梯 ++ Ra 数组 第十天

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

开始时间2023-07-04 09:10:02

结束时间2023-07-04 21:48:28

前言:哎嘿,呜呼!

L1-046 整除光棍

一、题目编号及题目说明

二、程序功能测试及说明

  使用循环来计算一个奇数x的光棍数,其中光棍数定义为只包含数字1且能被x整除的数。

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

  1. 输入一个奇数x。
  2. 初始化计数器count为1,并初始化一个变量a为1,用于表示光棍数。
  3. 通过循环找到能除以x的最小的光棍数a。每次循环将a乘以10加1,同时将计数器count加1。
  4. 输出最高位数字,即将a除以x的商。
  5. 使用变量t记录余数,初始化为a对x取模的结果。
  6. 循环将商从高到低位依次输出,直到余数为0。每次循环将t乘以10加1,并输出t除以x的商,同时将计数器count加1,更新t为t对x取模的结果。
  7. 输出计数器count,表示输出的光棍数的位数。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int x;
    cin>>x;//x是那个奇数
    int count = 1;   
    int a = 1;        //a用来表示光棍数
    //通过循环求出能除以x的最小a值(注:此处并不要求整除,能进行除法运算即可,即a>=x便可)
    while (a < x) {            
        a = a * 10 + 1;        
        count++;
    }
    printf("%d", a / x);    //输出最高位数字
    int t = a % x;            //用t记录余数;
    while (t!=0) {            //利用循环将商从高到低位依次输出,直到余数为0。
        t = t * 10 + 1;        
        printf("%d", t / x);
        count++;
        t %= x;
    }
    printf(" %d\n", count);

}

五、题目评分

L1-047 装睡

一、题目编号及题目说明

二、程序功能测试及说明

  输入n个人的姓名、年龄和体重,然后判断他们的年龄和体重是否符合条件,如果不符合条件就输出对应的姓名。

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

  1. 输入一个整数n,表示接下来要输入的人数。
  2. 使用循环从0到n-1遍历每个人。
  3. 在循环中,首先输入一个字符串s,表示姓名。
  4. 输入两个整数a和b,分别表示年龄和体重。
  5. 初始化标志变量flag为0,表示当前人的年龄和体重符合条件。
  6. 使用条件判断语句判断年龄和体重是否满足条件,如果不满足,则将标志变量flag设为1。
  7. 如果标志变量flag为1,表示当前人的年龄和体重不符合条件,则输出对应的姓名。
  8. 循环结束后,返回0,表示程序正常结束。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    int i=0;
    for(i=0;i<n;i++)
    {
        string s;
        int a,b;
        cin>>s>>a>>b;
        int flag=0;
        if(a<15||a>20)
        {
            flag=1;
        }
        if(b<50||b>70)
        {
            flag=1;
        }
        if(flag==1)
        {
            cout<<s<<endl;
        }
    }
    return 0;
}

五、题目评分

 L1-048 矩阵A乘以B

一、题目编号及题目说明

二、程序功能测试及说明

  实现了两个矩阵的乘法运算,并输出结果矩阵。

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

  1. 首先输入两个整数Ra和Ca,分别表示矩阵A的行数和列数。
  2. 创建一个二维动态数组A,大小为Ra行Ca列,并读入矩阵A的元素。
  3. 输入两个整数Rb和Cb,分别表示矩阵B的行数和列数。
  4. 创建一个二维动态数组B,大小为Rb行Cb列,并读入矩阵B的元素。
  5. 判断两个矩阵是否满足乘法条件,即A的列数等于B的行数,如果不满足,则输出错误信息并返回。
  6. 创建一个二维动态数组C,大小为Ra行Cb列,用于存放结果矩阵。
  7. 使用三重循环计算矩阵乘法,遍历矩阵A的每一行和矩阵B的每一列,逐个元素相乘并累加到结果矩阵C中。
  8. 输出结果矩阵的行数和列数。
  9. 依次输出结果矩阵C的每个元素,每行元素之间用空格分隔。

四、程序源代码

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

int main() {
    int Ra, Ca;
    cin >> Ra >> Ca;
    vector<vector<int>> A(Ra, vector<int>(Ca));
    for (int i = 0; i < Ra; i++) {
        for (int j = 0; j < Ca; j++) {
            cin >> A[i][j];
        }
    }

    int Rb, Cb;
    cin >> Rb >> Cb;
    vector<vector<int>> B(Rb, vector<int>(Cb));
    for (int i = 0; i < Rb; i++) {
        for (int j = 0; j < Cb; j++) {
            cin >> B[i][j];
        }
    }

    if (Ca != Rb) {
        cout << "Error: " << Ca << " != " << Rb << endl;
        return 0;
    }

    vector<vector<int>> C(Ra, vector<int>(Cb));
    for (int i = 0; i < Ra; i++) {
        for (int j = 0; j < Cb; j++) {
            for (int k = 0; k < Ca; k++) {
                C[i][j] += A[i][k] * B[k][j];
            }
        }
    }

    cout << Ra << " " << Cb << endl;
    for (int i = 0; i < Ra; i++) {
        for (int j = 0; j < Cb; j++) {
            cout << C[i][j];
            if (j < Cb - 1) {
                cout << " ";
            }
        }
        cout << endl;
    }

    return 0;
}

五、题目评分

 L1-049 天梯赛座位分配

一、题目编号及题目说明

二、程序功能测试及说明

  实现了一个根据输入数组a中的元素值生成二维数组b的过程,并打印出二维数组的内容。

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

  1. 首先输入一个整数n,表示数组a的长度。
  2. 创建一个一维数组a,大小为n,并读入数组a的元素。
  3. 找到数组a中的最大值max。
  4. 创建一个二维数组b,大小为n行max*10列。
  5. 使用两重循环,遍历二维数组b的每个元素,如果满足条件j < a[i]*10,则根据不同情况给b[i][j]赋值。
    • 如果i != f(表示上一个被赋值的元素所在的行),则t加1,将t赋值给b[i][j],并更新f为i。
    • 如果i == f,则t加2,将t赋值给b[i][j],并更新f为i。
  6. 使用两重循环遍历二维数组b,逐行打印出数组b的内容,每10个元素换行输出。
    • 输出每个元素后,如果当前元素是该行的最后一个元素,则换行,否则输出空格。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,i,j,a[101],b[110][1001],t=0,max=0,f=-1;
    cin>>n;
    for(i=0;i<n;i++)
    {
        cin>>a[i];
        if(max<a[i])
        max=a[i];
    }
    for(j=0;j<max*10;j++) 
        for(i=0;i<n;i++)
        {
            if(j<a[i]*10)
            {
                if(i!=f)
                {
                    t++;
                    b[i][j]=t;
                    f=i;
                }        
                else
                {
                    t+=2;
                    b[i][j]=t; 
                    f=i;
                }            
            }
        }
    for(i=0;i<n;i++)
    {
        cout<<"#"<<i+1<<endl;
        for(t=0;t<a[i]*10;t++)
         {
             cout<<b[i][t];
             if((t+1)%10==0)
             cout<<endl;
             else
             cout<<" ";
         }
    }
 }     

五、题目评分

总结:啊哈哈哈,今天很开心。ps:其实我早上十点半就写完咯!

每日一mo:于是我把和你的所有事压在心底但经常隐隐作痛....

标签:输出,暑假,int,矩阵,天梯,++,Ra,数组,第十天
From: https://www.cnblogs.com/R-f-12/p/17527131.html

相关文章

  • 2023年暑假集训总结/7.4
    2023年暑假集训总结/7.3预估成绩:100+20+10+20=150实际成绩:0+61+19+0=80T1最大公约数题意:有n个数,取n-1个数,求可以得到的最大gcd。思路&做法:有一个思路是将所有数字质因数分解,然后对于每一个质数,判断他是否在这n个数中“拖了后腿”,这样就可以O(nk)地求出答案,k是质因数的个......
  • 暑假集训计划
    其实也没什么好写的吧。大概列几点模拟赛成绩要求每次\(200+\)(似乎不难?),尽量\(250+\),争取更多\(300+\)。(不过没记错的话去年NOIP结束的时候给今年定的目标就是\(300+\),可能都定低了?)少学点uselessalgorithm,多练练usefulalgorithmCF上个2100应该问题不大,瓶颈可能在......
  • 2023ACM暑假训练day 8-9 线段树
    目录DAY8-9线段树训练情况简介题DAY8-9线段树训练地址:传送门训练情况简介题题意:思路:......
  • 2023年暑假集训总结/7.1
    6-26T1多米诺骨牌Hades与Dionysus在狂饮后玩起了多米诺骨牌的小游戏。现在桌上有n块多米诺骨牌,每块多米诺骨牌上半部分和下半部分上都有一个整数。每次翻转可让一块多米诺骨牌上下翻转,即上下部分数交换。Hades想让n块骨牌上半部分的数加起来是一个偶数,而Dionys......
  • 暑假Java学习第二周——第二天
    7.3键盘录入及录入求和:importjava.util.Scanner;publicclassTest{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);System.out.println("请输入第一个数字");inti1=sc.nextInt();System.out.println("请输入第二个数字");inti2=sc.nex......
  • 2023年暑假集训总结/7.3
    2023年暑假集训总结/7.3预估成绩:100+50+40+20=210实际成绩:100+25+24+25=174T1房题意:有n个已知中心和长度且互不重合的区间,问有多少个长度为t的区间恰好与其中一个区间的一个端点相等,且不与所有区间重合思路&做法:签到题,注意到答案上界为2n,只需要依次枚举接在每个区间左右......
  • 暑假周记(7.3)
    今日周一,又是新的一周、新的一天,昨天那么多愁善感那是我么?当然是,但是那又有什么关系,负面情绪就是要那样发泄出来,今天的我又是新的我。七月三号了,距离去补习班上班还有不到一周,去教四五年级的小朋友们英语,正好上这个班又可以让我的作息更加规律有效帮助我大二的作息,只要回学校的时......
  • 2023 暑假模拟赛 整理合集
    Contest2043-NOIP2023模拟测试赛(三)ProblemB:上升子序列(sequence)优化树状数组求上升子序列。很好的一道题,但是忘记了怎么去反向思考问题。......
  • 2023ACM暑假训练day 7-RMQ问题
    目录DAY7RMQ问题训练情况简介题DAY7RMQ问题训练地址:传送门训练情况简介2023-07-03星期一早上:下午:晚上:题题意:思路:......
  • 2023年暑假集训总结
    2023年暑假集训总结/6.26-背锅的chara-博客园(cnblogs.com)2023年暑假集训总结/6.27-背锅的chara-博客园(cnblogs.com)2023年暑假集训总结/6.28-背锅的chara-博客园(cnblogs.com)2023年暑假集训总结/6.29-背锅的chara-博客园(cnblogs.com)2023年暑假集训......