假期刷题打卡--Day24

news2024/11/18 10:35:37

1、MT1198阶乘差

求1!-2!-3!-…-n!

格式

输入格式:

输入为整型

输出格式:

输出为整型

样例 1

输入:

5

输出:

-151
分析过程

        看到这个题目的时候,感觉这个题目出现的没有必要,就和前面阶乘和一样的,但是在自己写了之后才发现了两者的区别,当计算阶乘和的时候,sum=0可以直接计算,但是如果是结成差,就需要注意,若sum初值为0,那么0-1就直接是个负数,最终结果就是错误的。所以sum的初值应该从1的阶乘1开始,而循环初值也应该从2开始。

        按照上述思路,我第一次写的代码如下:

#include<bits/stdc++.h> 

using namespace std;

int s(int a){
    int sum1 = 1;
    for(int i=1;i<=a;i++){
        sum1 *= i;
    }
    // cout << sum1 << "##";
    return sum1;
}
int main( )
{
    int n,sum=1;
    cin >> n;
    for(int i=2;i<=5;i++){
        sum -= s(i);
    }
    cout << sum;
    return 0;
}

但是,这个代码却一个用例都不能通过,原因如下:我出现了一个最不应该出的错误:在计算sum的时候,循环条件写成了样例的输入值; 

所以,将5改成n就可以了。 

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

using namespace std;

int s(int a){
    int sum1 = 1;
    for(int i=1;i<=a;i++){
        sum1 *= i;
    }
    // cout << sum1 << "##";
    return sum1;
}
int main( )
{
    int n,sum=1;
    cin >> n;
    for(int i=2;i<=n;i++){
        sum -= s(i);
    }
    cout << sum;
    return 0;
}

这个确实不该错的。

2、MT1199公式计算

输入正整数n和r,计算公式 (n!) / (n-r)!。

格式

输入格式:

输入整型,空格分隔。

输出格式:

输出实型,保留2位小数。

样例 1

输入:

2 1

输出:

2.00
分析过程

还是和前面一样的分析思路,首先用一个函数计算阶乘,然后在主函数中调用,但是发现只能通过一个用例

#include<bits/stdc++.h> 

using namespace std;

int s(int a){
    int sum1 = 1;
    for(int i=1;i<=a;i++){
        sum1 *= i;
    }
    return sum1;
}
int main( )
{
    int n,r;
    double c;
    cin >> n >> r;
    c = s(n)/s((n-r));
    printf("%.2f",c);
    return 0;
}

所以,开始寻找错误: 

没找到,所以就去评论区看了一下别人的思路,发现,他们都是站在阶乘计算的位置上思考问题,而我是站在出发的位置上思考,看了之后,就直接修改了代码:

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

using namespace std;

int main( )
{
    int n,r;
    double res=1;
    cin >> n >> r;
    for(int i=n-r+1;i<=n;i++) res*=i;
    printf("%.2lf",res);
    return 0;
}

3、MT1201强数

强数是各位数字的阶乘和等于原始数的数,输入一个数字N,检查它是否为强数。是则输出YES,否则输出NO。比如145,1!+4!+5!=145

格式

输入格式:

输入为整型

输出格式:

输出为YES或者NO

样例 1

输入:

145

输出:

YES
分析过程

初次分析本题目,第一想法就是首先设置一个count,记录输入数的位数,然后在循环中使用求余与除法结合的方式计算总数,最后使用if语句判断sum与输入数是否相等,如果相等,那么就输出YES,否则,输出NO。

按照以上思路,写出代码:

#include<bits/stdc++.h> 

using namespace std;

int s(int a){
    int sum1 = 1;
    for(int i=1;i<=a;i++){
        sum1 *= i;
    }
    return sum1;
}
int main( )
{
    int n,count=0,sum=0;
    cin >> n;
    int b = n,m = n;
    while(b!=0){ 
        count++;
        b = b/10;
    }
    // cout << count;
    for(int i=1;i<=3;i++){
        int c = n%10;
        sum += s(c);
        n /= 10;
    }
    if(sum == m){
        cout << "YES";
    }else{
        cout << "NO";
    }
    return 0;
}

但是,有一个样例过不去,为什么啊啊啊啊啊啊啊?

所以,开始找错:

有时候,真的对自己挺无语的,一个错误一晚上竟然出现了两次。。没错,就是循环条件那里,没有设置成变量……

修改之后,代码如下: 

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

using namespace std;

int s(int a){
    int sum1 = 1;
    for(int i=1;i<=a;i++){
        sum1 *= i;
    }
    return sum1;
}
int main( )
{
    int n,count=0,sum=0;
    cin >> n;
    int b = n,m = n;
    while(b!=0){ 
        count++;
        b = b/10;
    }
    // cout << count;
    for(int i=1;i<=n;i++){
        int c = n%10;
        sum += s(c);
        n /= 10;
    }
    if(sum == m){
        cout << "YES";
    }else{
        cout << "NO";
    }
    return 0;
}

 

4、MT1203字母矩阵

请编写一个简单程序,输入正整数n,输出n*n的F字矩阵

格式

输入格式:

输入整型

输出格式:

输出n*n的F字矩阵,空格分隔

样例 1

输入:

5

输出:

F F F F F  
F F F F F  
F F F F F  
F F F F F  
F F F F F  
分析过程

我的想法是,循环条件直接输出n*n,然后在能整除n的数上,输出一个换行符。(即使用一个for循环实现)

我实现之后,尝试使用双重循环解决此问题(虽然以前没好好听课,但是还是见过使用双重循环输出矩阵的例子,嘿嘿~)

实现代码

法一:一个for循环实现:

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int n,count=0;
    cin >> n;
    for(int i=0;i<n*n;i++){
        cout << "F" << " ";
        count++;
        if(count % n == 0 ){
            cout << endl;
        } 
    }
    return 0;
}

法二:使用双重for循环实现

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int n,count=0;
    cin >> n;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            cout << "F" << " ";
        }cout << "\n";
    }
    return 0;
}

此题中使用双重for循环也挺简单的,不需要分析内层循环的条件,直接输出即可。

 

明天继续吧。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jbdc的简单了解

JDBC JDBC所处的位置 JDBC的本质 Java操作数据库的一套接口。 补充 ddl:数据库定义语言,例如建表,创建数据库等。 dml:数据库操作语言,例如增删改。 dql:数据库查询语言,例如查询语句。 注意 在创建Java项目后的第一个步骤是导入jar包。 导入jar包的步骤 1 创建l…

华为视频监控接入到视频监控平台 (华为网路监控摄像机IPC和华为视频节点设备VCN)

目 录 一、设备介绍 1.1 华为VCN介绍 1.2 AS-V1000视频监控平台介绍 1.3 平台服务器配置说明 二、安装、配置HW_IVS软件 2.1下载安装HW_IVS软件 2.2登录HW_IVS 2.3共享到外域 三、配置华为外域参数 3.1 PCG模块设置 3.2通信协议GBT28181配置 3.3传…

ChatGPT 4.0 升级指南, ChatGPT Plus(GPT 4.0) 有何优势?

1.ChatGPT 是什么&#xff1f; ChatGPT 是由 OpenAI 开发的一种基于人工智能的聊天机器人&#xff0c;它基于强大的语言处理模型 GPT&#xff08;Generative Pre-trained Transformer&#xff09;构建。它能够理解人类语言&#xff0c;可以为我们解决实际的问题。 ChatGPT 4.…

网络选择流程分析(首选网络类型切换流程)

首先是界面,我在此平台的界面如下: 对应的入口源码位置在Settings的UniEnabledNetworkModePreferenceController中,当然其他平台可能在PreferredNetworkModePreferenceController中,流程上都是大同小异 然后点击切换按钮会调用到UniEnabledNetworkModePreferenceControlle…

【第三十五节】idea项目的创建以及setting和Project Structure的设置

项目创建 Project Structure的设置 点击file ~ Project Structure 进入

Python脚本之操作Elasticsearch【一】

本文为博主原创&#xff0c;未经授权&#xff0c;严禁转载及使用。 本文链接&#xff1a;https://blog.csdn.net/zyooooxie/article/details/109588072 前面刚写了 requests发请求 操作Elasticsearch - Search https://blog.csdn.net/zyooooxie/article/details/123730279&…

从零开始手写mmo游戏从框架到爆炸(七)— 消息封装

上一篇&#xff0c;我们初步把消息handler 注册到了服务中&#xff0c;在进行后续工作之前我们需要再做一些准备工作。 第一&#xff1a;把之前自己管理的bean放到spring中去管理&#xff0c;后面大部分的bean都通过spring来管理。 第二&#xff1a;为了方便路由消费&#xff0…

Golang-Map有序输出——使用orderedmap库实现

前言 工作中遇到一个问题&#xff1a;需要导出一个MySQL表格&#xff0c;表格内容由sql查询得来。但现在发现&#xff0c;所导出的表格中&#xff0c;各列的顺序不确定。多次导出&#xff0c; 每一次的序列顺序也是不定的。 因此确定是后端&#xff0c;Map使用相关导致的问题。…

别具一格,质感拉满 | PITAKA苹果Apple Watch彩碳表带开箱

别具一格&#xff0c;质感拉满 | PITAKA苹果Apple Watch彩碳表带开箱 我是在前年的时候购买的目前手头这款Apple Watch Series7&#xff0c;因为是购买的Nike版&#xff0c;所以可以看到它的表带标配为透气孔的运动型表带。 &#x1f53a;耐克版的透气孔表带虽说在一定程度上解…

时序预测 | MATLAB实现基于CNN-LSTM-AdaBoost卷积长短期记忆网络结合AdaBoost时间序列预测

时序预测 | MATLAB实现基于CNN-LSTM-AdaBoost卷积长短期记忆网络结合AdaBoost时间序列预测 目录 时序预测 | MATLAB实现基于CNN-LSTM-AdaBoost卷积长短期记忆网络结合AdaBoost时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于CNN-LST…

电机控制系列模块解析(第六篇)—— 观测器

最近有上传一些入门的免积分的资料&#xff0c;方便大家上手进行仿真分析。注意查收。还在继续更新中。 继续回到咱们的电机控制系列模块解析&#xff08;第六篇&#xff09;—— 观测器 1、无位置传感器控制背景 这方面的文献比较多&#xff0c;直接引用一些文献里的背景知…

SSRF:服务端请求伪造攻击

目录 什么是SSRF&#xff1f; 攻击内网应用 端口扫描 攻击非web应用 pikachu中的SSRF curl&#xff08;端口扫描&#xff09; file_get_content&#xff08;读取文件&#xff09; 防御SSRF 什么是SSRF&#xff1f; 服务端请求伪造&#xff08;Server Side Request For…

Python __file__属性:查看模块的源文件路径

除可以查看模块的帮助信息之外&#xff0c;还可以直接阅读模块的源代码来掌握模块功能&#xff0c;提升 Python 编程能力。 不管学习哪种编程语言&#xff0c;认真阅读那些优秀的框架、库的源代码都是非常好的学习方法。 通过模块的 __file__ 属性即可查看到指定模块的源文件…

实践:微服务版本升级步骤以及maven仓库相关概念

进行微服务开发的时候&#xff0c;上层服务依赖于下层的服务的api&#xff0c;比如适配属于上层服务&#xff0c;用户属于下层服务。 例子: 上层服务 <!--订单管理微服务api依赖--> <dependency><groupId>com.jn.server</groupId><artifactId>…

docker部署自己的网站wordpress

目录 安装 1.创建目录 2.创建并启动mysql 3.创建并启动wordpress 使用 1.设置语言 2.设置基础信息 3.首页 安装 1.创建目录 mkdir -p /opt/wordpress/{db,data} 2.创建并启动mysql docker run -d --name my_mysql --restart always -e MYSQL_ROOT_PASSWORD123456 -e …

【网络安全】URL解析器混淆攻击实现ChatGPT账户接管、Glassdoor服务器XSS

文章目录 通配符URL解析器混淆攻击实现ChatGPT账户接管通配符URL解析器混淆攻击实现Glassdoor服务器缓存XSS 本文不承担任何由于传播、利用本文所发布内容而造成的任何后果及法律责任。 本文将基于ChatGPT及Glassdoor两个实例阐发URL解析器混淆攻击。 开始本文前&#xff0c;…

【问题篇】activiti工作流转办并处理备注问题

当处理activiti转办问题时&#xff0c;需要做的就是处理审批人和备注问题。 处理的思路是&#xff0c;先将当前环节标志成转办标签&#xff0c;再通过BUSINESS_KEY_找到流程实例的历史记录&#xff0c;找到最新的一条复制一份出来&#xff0c;表示需要转办到的人的历史记录并设…

【技能树学习】Git入门——练习题解析

前言 本篇文章给出了Git入门技能树中部分的练习题解析&#xff0c;包括分支管理&#xff0c;Git标签&#xff0c;在Mac和Windows上使用GitVSCode的步骤。强调了git cherry-pick不直接支持从标签中选择提交&#xff0c;git tag -d只能删除本地标签&#xff0c;Mac系统的终端可以…

【达梦数据库】使用DBeaver管理达梦数据库

使用DBeaver管理达梦数据库 Step1 安装相关程序 达梦8数据库DBeaver社区版 Step2 新建驱动 类型参数驱动名称DM8驱动类型Generic类名dm.jdbc.driver.DmDriverURL模板jdbc:dm://{host}:{port}默认端口5236默认数据库默认用户SYSDBA Step3 连接服务

ideal打包,如何访问项目根目录的libs中的jar包

参考&#xff1a;idea maven 导入lib中jar 并打包_maven引入lib中的jar包-CSDN博客 解决办法&#xff0c;只需要在pom文件中加入 <includeSystemScope>true</includeSystemScope> <build><!-- <includeSystemScope>true</includeSystemScope&g…