假期刷题打卡--Day15

1、MT1152韩信又生气了

韩信点兵(大于10人),三个三个一排少1个人,五个五个一排又少1个人,七个七个一排还少1个人。韩信生气了,从别的队伍里调来一个人!这样不管是三个一排五个一排还是七个一排都完美了。问原本最少应该有多少人。

格式

输入格式:

输出格式:

输出整型

样例 1

输入:

输出:

104
解决思路

实质上,这个题目和前面的几个没有太大的区别,只是前面的都说超出,这个说缺少。而解决的时候也不需要太拧巴,只需要逆向思考,既然说3个一排站缺一个,那么就是有一排多出来2个,即余数为2;同理,5个一排少1个,就是有一排多出来4个,即余数为4;7个一排少1个,就是有一排多出来6个。然后就可以写代码了。

实现代码
#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int x = 10;
    while(x++){
        if(x%3==2 && x%5==4 && x%7==6){
            cout << x;
            break;
        }
    }
    return 0;
}

2、MT1153真因子

输入正整数N,计算其所有真因子之和。自然数的真因子是严格小于该数的除数。

格式

输入格式:

输入正整数N

输出格式:

输出整型

样例 1

输入:

10

复制

输出:

8
备注

N>2

相关知识点

因子:因子是指能够整除某个整数而不产生余数的数。例如:整数A除B,得出结果是没有余数的整数,就称B是A的因子。

真因子:除了整数本身以外的所有因子。

总结来说:

整数的因子包括它本身和其他能够整除它的整数。但是真因子是指除了整数本身以外的所有因子。换句话说,真因子不包括整数本身。例如,整数12的因子包括1、2、3、4、6和12。其中,真因子是1、2、3、4和6,因为它们都能整除12,而12本身不被认为是真因子。

实现代码
#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int N,sum = 0;
    cin >> N;
    for(int i=1;i<N;i++){
        if(N%i==0){
            sum+=i;
        }
    }
    cout << sum;
    return 0;
}

3、MT1155单位矩阵

输入3X3的整型矩阵A,判断是否为单位矩阵,输出YES或者NO。

格式

输入格式:

输入矩阵,空格分隔

输出格式:

输出YES或者NO

样例 1

输入:

1 0 0 0 1 0 0 0 1

输出:

YES
相关知识点
单位矩阵:(来自百度百科)

        在矩阵的乘法中,有一种矩阵起着特殊的作用,如同数的乘法中的1,这种矩阵被称为单位矩阵。它是个方阵,从左上角到右下角的对角线(称为主对角线)上的元素均为1。除此以外全都为0。

        在C语言中,赋值操作是从右往左执行的。因此,可以使用这种连续赋值的方式将多个变量赋予相同的值。例如:a=b=c=0;

上述代码会先将0赋值给c,然后将c的值赋值给b,最后将b的值赋值给a,从而使得a、b和c均为0。

二维数组:

定义:二维数组是一种特殊类型的数组,它可以存储多行多列的元素。二维数组可以被看作是一个表格或网格,其中每个元素由两个索引值表示,一个用于指定行号,另一个用于指定列号。

初始化:二维数组的初始化可以按行分段赋值,也可按行连续赋值,也可以使用for语句赋值。
例如,对于数组 a[3][3]。

  • 按行分段赋值应该写作:
a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
  • 连续赋值:
a[3][3]={1,2,3,4,5,6,7,8,9};
  • 使用for语句赋值:
int a[3][3];
for(int i = 0;i < 3;i++){
    for(int j = 0;j < 3;j++){
        scanf("%d",&a[i][j]);
    }
}
break和continue的区别:
  • break:立即终止当前所在的循环(for、while、do-while),并跳出循环体,继续执行循环后的代码。也可以用于终止switch语句的执行。当遇到满足某个条件时,可以使用break语句来提前结束循环,无需等到循环条件不满足或循环次数达到上限。

例:

for (int i = 1; i <= 10; i++) {
    if (i == 5) {
        break;
    }
    printf("%d ", i);
}

当执行上述代码会输出:1 2 3 4。在循环执行到i == 5时,break语句被执行,循环立即终止,不再执行后续的循环体语句。

  • continue:立即跳过当前迭代中循环体内剩余的语句,直接进入下一次迭代。在执行到continue语句时,会停止当前迭代的执行,并进行下一次迭代的判断。

例如同样使用i==5这个条件

for (int i = 1; i <= 10; i++) {
    if (i == 5) {
        continue;
    }
    printf("%d ", i);
}

那么,执行上述代码会输出:1 2 3 4 6 7 8 9 10,在循环执行到i == 5时,continue语句被执行,跳过i==5这个条件,继续下面的循环。

跳出多重循环的一种方法:goto语句(但是并不建议使用,这里只是作为了解

goto 语句允许把控制无条件转移到同一函数内的被标记的语句。

注意:在任何编程语言中,都不建议使用 goto 语句。因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用 goto 语句的程序可以改写成不需要使用 goto 语句的写法。

C++ 中 goto 语句的语法:

goto label;
..
.
label: statement;
解决思路

 法一:直接按照单位矩阵去判断每个元素是否都满足;

法二:使用矩阵的表示方法,即采用二维数组表示,设一个flag去判断每个变量是否满足单位矩阵的要求。首先将 flag 初始化为1,假设输入的是单位矩阵。然后,在遍历矩阵的过程中,如果发现任何一个不符合单位矩阵定义的元素,就将 flag 置为0,并立即跳出循环。最后根据 flag 的值输出结果。

法三:依旧采用二维数组的方法,但是不设变量,只要判断不符合单位矩阵的条件,直接使用goto语句跳出双重循环。

实现代码

最简单粗暴的办法:

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int a1,a2,a3,a4,a5,a6,a7,a8,a9;
    scanf("%d %d %d %d %d %d %d %d %d",&a1,&a2,&a3,&a4,&a5,&a6,&a7,&a8,&a9);
    if(a1 == 1 && a2 == 0 && a3 == 0 && a4 == 0 && a5 == 1 && a6 == 0 && a7 == 0 && a8 == 0 && a9 == 1 ){
        cout << "YES";
    }else cout <<  "NO";

    return 0;
}

使用flag判断: 

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

int main() {
    int a[3][3], flag = 1;  // 初始化flag为1,假设是单位矩阵

    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            scanf("%d", &a[i][j]);
        }
    }

    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            if (i == j) {
                if (a[i][j] != 1) {  // 对角线上的元素必须为1
                    flag = 0;
                    break;  // 发现不符合条件的元素,直接跳出循环
                }
            } else {
                if (a[i][j] != 0) {  // 非对角线上的元素必须为0
                    flag = 0;
                    break;  // 发现不符合条件的元素,直接跳出循环
                }
            }
        }
        if (flag == 0) {
            break;  // 发现不符合条件的元素,直接跳出外层循环
        }
    }

    if (flag == 1) {
        cout << "YES";
    } else {
        cout << "NO";
    }

    return 0;
}

 使用goto语句跳出双重循环方法(了解):

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int a[3][3],flag=0;
    for(int i=0;i<3;i++){
        for(int j=0;j<3;j++){
            scanf("%d",&a[i][j]);
        }
    }
    for(int i=0;i<3;i++){
        for(int j=0;j<3;j++){
            if(i==j){
                if(a[i][j]==1){
                    flag=1;
                }else{
                    flag=0;
                    goto cc;
                }     
            }else{
                if(a[i][j]==0){
                    flag=1;
                }else{
                    flag=0;
                    goto cc;
                } 
            }
        }
    }
    cc:
    if(flag==1){
        cout << "YES";
    }else{
        cout << "NO";
    }

    return 0;
}

4、MT1157矩阵相等

输入4X4的整型矩阵A和B,判断是否为相等,输出YES或者NO。

格式

输入格式:

输入矩阵,空格分隔。

输出格式:

输出YES或者NO

样例 1

输入:

4 0 0 0 5 0 0 0 6 1 2 3 4 5 6 7  
4 0 0 0 5 0 0 0 6 1 2 3 4 5 6 7 

输出:

YES
实现代码
#include <iostream>

using namespace std;

void cmp(int a[4][4], int b[4][4]) {
    int flag = 1; // 将flag初始值设为1,表示初始假设两个矩阵相等
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) {
            if (a[i][j] != b[i][j]) {
                flag = 0; // 有至少一个元素不相等,将flag设为0
                break;
            }
        }
        if (flag == 0) {
            break;
        }
    }
    if (flag == 1) {
        cout << "YES" << endl;
    } else {
        cout << "NO" << endl;
    }
}

int main() {
    int a[4][4], b[4][4];
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) {
            cin >> a[i][j];
        }
    }
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) {
            cin >> b[i][j];
        }
    }
    cmp(a, b);
    return 0;
}

在写判断语句的时候,没必要每次都去判断正确的情况,有时候反过来思考可能更有效,比如在上面的3、4题当中,判断不等(!=)的情况反而更加方便一点,这里再写一遍第4题就是给自己长长记性。

明天继续吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/350315.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《从零开始制作消除游戏:基于Web技术的简单教程》

在撰写《从零开始制作消除游戏&#xff1a;基于Web技术的简单教程》这篇博客时&#xff0c;主要的目标是提供一个清晰、逐步的指南&#xff0c;帮助读者从零开始创建自己的消除游戏。 游戏逻辑实现 游戏板设计与初始化&#xff1a;描述如何创建游戏板的数据结构&#xff0c;以…

机器学习算法(一)

一、线性回归 线性回归&#xff08;Linear Regression&#xff09;可能是最流行的机器学习算法。线性回归就是要找一条直线&#xff0c;并且让这条直线尽可能地拟合散点图中的数据点。它试图通过将直线方程与该数据拟合来表示自变量&#xff08;x 值&#xff09;和数值结果&am…

遇到继需证件照的时候怎么办?

你是否曾经遇到过这样的情况&#xff1a;急需一张证件照&#xff0c;却没有时间去照相馆或复印店&#xff0c;而且手头也没有现成的照片。这时候&#xff0c;你可能会感到很困扰&#xff0c;不知道该怎么办才好。别担心&#xff0c;今天我将为你揭示如何在短短一分钟内制作出自…

YOLOv8优化策略:分层特征融合策略MSBlock | YOLO-MS ,超越YOLOv8与RTMDet,即插即用打破性能瓶颈

🚀🚀🚀本文改进:分层特征融合策略MSBlock,即插即用打破性能瓶颈 🚀🚀🚀在YOLOv8中如何使用 1)作为MSBlock使用;2)与c2f结合使用; 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1)手把…

ANN论文总结

本文主要是个人笔记&#xff0c;记录与存储相关的ANN工作&#xff0c;想着写都写了不如发出来与大家分享&#xff0c;大多写得比较简单有些稍微详细一点&#xff0c;内容仅供参考。 CognitiveSSD S. Liang, Y. Wang, Y. Lu, et al. Cognitive SSD: A Deep Learning Engine for…

光纤接口类型

光纤接口 网络设备基础知识 文章目录 光纤接口前言一、光纤接口二、光纤接口的优缺点总结前言 不同的接口类型适用于不同的光纤传输系统和应用需求。在选择光纤设备时,需要根据实际需求和系统要求选择适当的光纤接口类型。 一、光纤接口

MATLAB环境下使用训练好的卷积神经网络进行大地电磁数据噪声抑制

大地电磁MT是一种比较成熟的地球物理勘探方法&#xff0c;通过计算地面测量的正交电场分量和磁场分量的扰动值研究地下介质的电性结构。MT在油气和工程勘探领域得到了广泛应用。但是由于该方法以天然电磁场为场源&#xff0c;存在地面信号弱和源激发随机的缺点&#xff0c;极易…

(27)Linux信号的产生核心转储---初步认识信号

一、信号入门 1. 生活角度的信号 你在网上买了很多件商品&#xff0c;再等待不同商品快递的到来。但即便快递没有到来&#xff0c;你也知道快递来临时&#xff0c; 你该怎么处理快递。也就是你能“识别快递”当快递员到了你楼下&#xff0c;你也收到快递到来的通知&#xff0…

Apollo Cyber RT:引领实时操作系统在自动驾驶领域的创新

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《linux深造日志》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下…

uniapp状态管理Vuex介绍及vuex核心概念

状态管理Vuex Vuex 是什么&#xff1f; Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。 uni-app 内置了 Vuex 什么是“状态管理模式”&#xff1f; <!…

x-cmd pkg | haxor-news - Hacker News CLI

目录 简介首次用户功能特点进一步探索 简介 haxor-news 是一个用于在终端上查看 Hacker News 的内容。它可以让你在命令行查看/过滤 Hacker News 的帖子、评论、用户信息等&#xff0c;如过去 60 分钟内发布的最新评论。 Hacker News 是一家由 Paul Graham 创建的关于计算机黑…

【研0日记】24.01.26

回家倒计时5天 今天怎么说呢&#xff0c;确实是差不多写完了&#xff0c;虽说可以继续写&#xff0c;但是再写就超12页了&#xff0c;要额外收钱&#xff0c;而且我还要删掉一点 好贵啊&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 今天还照老师…

基于固件库的RT-THREAD移植

为什么要使用操作系统 当我们进入嵌入式这个领域的时候&#xff0c; 往往首先接触的都是单片机编程&#xff0c; 单片机编程又首选 51 单片机来入门。 这里面说的单片机编程通常都是指裸机编程&#xff0c;即不加入任何 RTOS&#xff08;Real Time Operation System 实时操作系…

C++ 重点内容:友元

目录 友元函数&#xff1a; 友元成员函数&#xff1a; 友元类&#xff1a; 友元是否有悖于OOP? 总结&#xff1a; 类因为具有封装和信息隐藏的特性&#xff08;类外函数无法访问类的私有、保护成员&#xff09;&#xff0c;C提出友元解决特定的编程需要&#xff1b;友元分…

计算机网络的体系结构的各层在整个过程中起到什么作用?

ps&#xff1a;本文章的图片内容来源都是来自于湖科大教书匠的视频&#xff0c;声明&#xff1a;仅供自己复习&#xff0c;里面加上了自己的理解 这里附上视频链接地址&#xff1a;1.6 计算机网络体系结构&#xff08;4&#xff09;—专用术语_哔哩哔哩_bilibili 目录 &#x…

day3C++

设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。 #include <iostream>using namespace std;clas…

阿里云幻兽帕鲁服务器创建和配置教程

如何自建幻兽帕鲁服务器&#xff1f;基于阿里云服务器搭建幻兽帕鲁palworld服务器教程来了&#xff0c;一看就懂系列。本文是利用OOS中幻兽帕鲁扩展程序来一键部署幻兽帕鲁服务器&#xff0c;阿里云百科aliyunbaike.com分享官方基于阿里云服务器快速创建幻兽帕鲁服务器教程&…

静态独享长效IP的优点有哪些?静态独享长效IP有哪些应用场景?

随着互联网的不断发展&#xff0c;IP地址作为网络通信中的重要标识&#xff0c;其重要性日益凸显。静态独享长效IP作为一种特殊的IP地址类型&#xff0c;具有许多优点&#xff0c;适用于多种应用场景。本文将详细介绍静态独享长效IP的优点以及适用场景。 一、静态独享长效IP的优…

Unity之动画和角色控制

目录 &#x1f4d5; 一、动画 1.创建最简单的动画 2.动画控制器 &#x1f4d5;二、把动画和角色控制相结合 &#x1f4d5;三、实现实例 3.1 鼠标控制角色视角旋转 3.2 拖尾效果 &#x1f4d5;四、混合动画 最近学到动画了&#xff0c;顺便把之前创建的地形&#xff0…

数据库练习

练习题目 创建职工表以及职工工资表 职工表字段&#xff1a;工号&#xff0c;姓名&#xff0c;性别&#xff0c;年龄 工资表字段&#xff1a;编号自增&#xff0c;职工工号&#xff0c;基础工资10000 通过触发器实现&#xff1a; 对职工进行添加时&#xff1a; 工资表中也要体现…