假期刷题打卡--Day24

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.hqwc.cn/news/455390.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

7.0 Zookeeper 客户端基础命令使用

zookeeper 命令用于在 zookeeper 服务上执行操作。 首先执行命令&#xff0c;打开新的 session 会话&#xff0c;进入终端。 $ sh zkCli.sh 下面开始讲解基本常用命令使用&#xff0c;其中 acl 权限内容在后面章节详细阐述。 ls 命令 ls 命令用于查看某个路径下目录列表。…

前端JavaScript篇之如何判断一个对象是否属于某个类?

目录 如何判断一个对象是否属于某个类&#xff1f; 如何判断一个对象是否属于某个类&#xff1f; 要判断一个对象是否属于某个类&#xff0c;我们可以使用以下几种方法&#xff1a; 使用instanceof运算符&#xff1a; instanceof运算符用于检查一个对象是否是某个类的实例。它…

[设计模式Java实现附plantuml源码~结构型]实现对象的复用——享元模式

前言&#xff1a; 为什么之前写过Golang 版的设计模式&#xff0c;还在重新写Java 版&#xff1f; 答&#xff1a;因为对于我而言&#xff0c;当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言&#xff0c;更适合用于学习设计模式。 为什么类图要附上uml 因为很…

我在项目中使用Redis的几个场景

目录 缓存 会话存储 分布式锁 消息队列 位统计 计数器 排行榜 缓存 缓存的目的是为了提高系统响应速度、减少数据库等资源的压力&#xff0c;redis作为键值对形式的内存数 据库&#xff0c;可以提供非常快速的读取速度&#xff0c;使得它成为存储热点数据或频繁访问数…

mysql8通过binlog恢复数据

参考资料: 通过binlog恢复误update的数据(一)_binlog 恢复update-CSDN博客 记录一次工作中的误删除&#xff0c;使用binlog恢复数据的问题。 1&#xff1a;找到mysql8的binlog文件。 2&#xff1a;把binlog文件转换为初始sql文件 mysqlbinlog -vv --base64-outputdecode-row…

EMNLP 2023精选:Text-to-SQL任务的前沿进展(上篇)——正会论文解读

导语 本文记录了今年的自然语言处理国际顶级会议EMNLP 2023中接收的所有与Text-to-SQL相关&#xff08;通过搜索标题关键词查找得到&#xff0c;可能不全&#xff09;的论文&#xff0c;共计12篇&#xff0c;包含5篇正会论文和7篇Findings论文&#xff0c;以下是对这些论文的略…

PDF文件格式(一):新版格式交叉引用表

PDF交叉引用表是PDF的重要组成部分&#xff0c;本文介绍的是新交叉引用表&#xff0c;这种引用表的格式是PDF的obj格式&#xff0c;内容是被压缩存放在obj下的stream中&#xff0c;因此比常规的引用表格式复杂。下面就开始介绍这种交叉引用表的格式和解析的方法&#xff1a; 1…

主动网络安全:成本效率和危机管理的战略方法

如何面对复杂网络攻击的进攻策略以及零信任模型的作用。攻击后反应性网络安全策略的基本步骤&#xff0c;透明度和准备工作。 讨论采用主动网络安全方法的好处&#xff0c;特别是在成本效率和危机管理方面&#xff0c;进攻性安全测试对合规性和零日响应的影响。 组织应该更多…

【C生万物】C语言数据类型、变量和运算符

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有…

5-3、S曲线生成器【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】&#xff0c;查看本系列全部文章 摘要&#xff1a;本节介绍步进电机S曲线生成器的计算以及使用 一.计算原理 根据上一节内容&#xff0c;已经计算了一条任意S曲线的函数。在步进电机S曲线加减速的控制中&#xff0c;需要的S曲线如图1所示&#xff0c;横…

QML用ListView实现带section的GridView

QML自带的GridView只能定义delegate&#xff0c;没有section&#xff0c;类似手机相册带时间分组标签的样式就没法做。最简单的方式就是组合ListViewGridView&#xff0c;或者ListViewFlow&#xff0c;但是嵌套View时&#xff0c;子级View一般是完全展开的&#xff0c;只显示该…

【VUE】UniAPP之uview组件库,自定义tag封装,支持添加u-icon图标

组件代码 <template><view class"tag" :class"[props.mode, props.shape]"><slot name"left"><!-- icon图标 没有传入图标时不显示 --><u-icon v-if"props.icon ! " :name"props.icon" :color&…