湘潭大学-2023年下学期-c语言-作业0x0a-综合1

A 求最小公倍数

#include<stdio.h>int gcd(int a,int b)
{return b>0?gcd(b,a%b):a;
}int main()
{int a,b;while(~scanf("%d%d",&a,&b)){if(a==0&&b==0)	break;printf("%d\n",a*b/gcd(a,b));}return 0;
}

记住最大公约数的函数,然后最小公倍数等于两个数的乘积除以最大公约数,最大公约数函数是代码中的gcd函数

B 爱你一生一世

#include<stdio.h>int gcd(int a,int b)
{return b>0?gcd(b,a%b):a;
}int main()
{int k;scanf("%d",&k);while(k--){int n,m;scanf("%d%d",&n,&m);//礼物的件数和不喜欢的礼物的件数if(m<2)	printf("1\n");else if(n==m)	printf("0\n");else{int a=(n-1)*n-(m-1)*m;int b=n*(n-1);int temp=gcd(a,b);a/=temp;b/=temp;printf("%d/%d\n",a,b);}}return 0;
}

这道题我非常感慨,因为以前对我来说确实是拦路虎,现在确实可以轻松写出来了

应用最大公约数函数,分式计算的话,就是分子分母同时除以最大公约数,如果分母等于1 ,就只需要输出分子

该题还需要推一下公式,选两件不同的礼物,至少有一件礼物是她喜欢的,反面是没有一件礼物是她喜欢的,用1减去反面的概率,就是我们要求的概率,很明显,反面的概率更容易求
在这里插入图片描述
公式如上,不喜欢的礼物数目小于2的话,选两件礼物,一定至少有一件礼物是她喜欢的,所以概率是1,如果所有礼物她都不喜欢,概率就是0(想起来,网上一个段子,她不是不喜欢这件礼物,只是不喜欢你哈哈)

甚至都不需要判断分母是否等于1,因为分母不可能等于1,如果分母等于1,只有一种情况,就是答案为1,但是答案为1的情况我们已经特判过了

C 奇偶校验

#include<stdio.h>
#include<string.h>int main()
{int n;while(~scanf("%d",&n)){if(n==-1)	break;int a[10];for(int i=1;i<=8;i++){a[i]=n%2;n/=2;}//for(int i=8;i>=1;i--)	printf("%d",a[i]);int cnt=0;for(int i=8;i>=2;i--){if(a[i]==1){cnt++;}}int b=0;if(cnt%2==0)	b=0;else	b=1;if(b==a[1])	printf("Yes");else	printf("No");printf("\n");memset(a,0,sizeof a);}return 0;
}

进制转换的一道题目,对进制取模,然后除以进制,非常经典,记住这个讨论即可

注意这里下标是从0开始的(题干里面),所以我一开始还是非常奇怪的,为什么只算前面六位当数据位,原来从0开始数数到六是七位

思路就是把一个十进制数字转换成二进制数字,把每一位数字存在数组里面,然后根据题目要求模拟一下即可

D n!进制

#include<stdio.h>int a[15];void fact()
{a[0]=1;a[1]=1;for(int i=2;i<=15;i++)	a[i]=a[i-1]*i;
}int main()
{fact();int n;while(~scanf("%d",&n)){if(n==0)	{puts("0");continue;}int temp=0;for(int i=15;i>=1;i--)	{if(a[i]<=n)	{temp=i;break;}}while(temp!=0)//最小是到1的阶乘{int ans=n/a[temp];printf("%d",ans);n%=a[temp];temp--;}puts("");}return 0;
}

不知道是什么原因,挺难理解这个题目的意思的

题目的意思是说,给定一个十进制数字,要求我们输出这个十进制数字的n!进制数字。这个定义比较奇怪,光看题干的21的例子,我还以为是把数位上的数字乘以该数字的阶乘,然后累加,累加的结果就是答案

但是事实上,10按照这个思路应该是1,100按照这个思路也是1,但是样例分别是120和4020

权重乘以系数就是总共的大小,观察一下数据范围,数据范围是3628799,这个数字是10的阶乘减去1,权重乘以系数,表示数字大小,每一位上的系数,从高位一直输出到最低位就是答案

要优先处理最高位,因为权重最大,假设优先处理最低位,很有可能会导致系数非常大,与实际情乱矛盾

所以思路就是,找到比当前十进制数字小的最大的阶乘,然后除以该阶乘,表示的是最高位的系数,输出这个系数,十进制数字n对该阶乘取余,表示的是剩下的数字的大小,然后把阶乘变成下一个阶乘(比如说4的阶乘变成3的阶乘,3的阶乘变成2的阶乘),一直到阶乘是1的阶乘,表示操作结束,输出换行即可

在循环里我们除了使用 if 这种条件判断,还可以使用 continue 表示后面的都不考虑,直接下一次循环,也非常方便

前面的 fact 函数是用来求阶乘的,fact是 factorial 英文的前四个字母,表示阶乘

另外发现写c语言题目还是用 c 语言比较友好,不然我辛苦写却不符合学弟学妹的需求,还是有点无奈的哈哈

笔者都大二了,还是不能随手秒掉这些 c语言题目,还是非常惭愧啊

E ICPC

#include<stdio.h>
#include<string.h>char s1[110],s2[110],s3[110];
int cnt[10];int main()
{int n;while(~scanf("%d",&n)){if(n==0)	break;scanf("%s",s1+1);scanf("%s",s2+1);scanf("%s",s3+1);char ans;for(int i=1;i<=n;i++){ans=s1[i];if(s2[i]<ans)	ans=s2[i];if(s3[i]<ans)	ans=s3[i];printf("%c",ans);cnt[ans-'A'+1]++;}printf("\n");for(int i=1;i<=4;i++)	printf("%d ",cnt[i]);printf("%d\n",cnt[5]);memset(cnt,0,sizeof cnt);}return 0;
}

算是简单的数组的使用

主要问题是空格……

还有就是不用c++的min函数确实写起来不是很熟练

输入字符的时候,空格也会读入,所以非常不方便,所以还是用字符串读入比较好,然后计数器数组每一次循环之后要重置,不然会影响下一次循环的结果

题目需要模拟的就是输入的数据里面,每一列的最小的字母,输出这个字母,然后给这个字母计数即可,注意输出的格式,防止PE

F coins

#include<stdio.h>int dp[45][2];int main()
{dp[1][0]=1;//正面dp[1][1]=1;//反面for(int i=2;i<=40;i++){dp[i][0]+=dp[i-1][1];dp[i][1]+=(dp[i-1][0]+dp[i-1][1]);}int n;while(~scanf("%d",&n)){if(n==0)	break;printf("%d\n",dp[n][0]+dp[n][1]);}return 0;
}

做不出来,简单的动态规划题目……

不包含连续的正面的方案数目。意思就是,只能是全部是反面,正反交替,或者是反面+正反交替

本来以为正面不好枚举答案,然后发现反面也不好枚举答案

DP来做这题,首先是DP集合表示什么意思,第一维表示的是有多少个硬币,第二维表示的是正面或者反面两种情况,我们需要做的是枚举所有情况

状态计算的时候,0表示正面,正面前面可以放反面

1表示反面,反面前面任意放

代码很短,但是得有动态规划的思路,才能做出来

G 因子和

#include<stdio.h>int main()
{long long n;while(~scanf("%I64d",&n)){if(n==0)	break;long long ans=0;for(int i=1;i*i<=n;i++){if(n%i==0){if(i==n/i)	ans+=i;else	ans+=i+n/i;}}printf("%I64d\n",ans);}return 0;
}

第一眼以为是前缀和,求1到n所有数字的和

直接按照题意模拟,用%lld输出,超时了,改成%I64d就过了

正解应该是要用算数基本定理的推论去分解质因数,然后套用公式求解

如果两个因子相等表示该数字是一个完全平方数,该因子只能被计算一次,如果不是的话就可以计算两次,分界点是输入的数字开根号

结语

总结就是,我感觉我C语言期末考试要爆零了,感觉一个题都做不来,慌……

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

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

相关文章

vue3项目使用pako库解压后端返回zip数据

文章目录 前言一、pako 介绍一些特点和功能&#xff1a;简单示例 二、vue3 实战示例1.安装后引入库安装:引用用自定义hooks 抽取共用逻辑部署小插曲 前言 外部接口返回一个图片数据是经过zip压缩的&#xff0c;前端需要把这个数据处理成可以显示的图片。大概思路&#xff1a;z…

《Spring Cloud学习笔记:分布式事务Seata》

解决分布式事务的方案有很多&#xff0c;但实现起来都比较复杂&#xff0c;因此我们一般会使用开源的框架来解决分布式事务问题。 在众多的开源分布式事务框架中&#xff0c;功能最完善、使用最多的就是阿里巴巴在2019年开源的Seata了。 1. 初识Seata Seata是 2019 年 1 月…

在k8s中使用cert-manager部署gitlab集群

写在前面的话&#xff1a;前面有详细的分享过在k8s集群中部署gitlab&#xff0c;不过当时使用gitlab的访问证书是阿里云上免费的ssl证书&#xff0c;今天特意专门介绍下另外一种基于cert-manager发布自签证书的方式实现部署gitlab到k8s集群中。 往期gitlab部署系列如&#xff1…

中间件系列 - Redis入门到实战(高级篇-分布式缓存)

前言 学习视频&#xff1a; 黑马程序员Redis入门到实战教程&#xff0c;深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目 中间件系列 - Redis入门到实战 本内容仅用于个人学习笔记&#xff0c;如有侵扰&#xff0c;联系删除 学习目标 Redis持久化Redis主从…

Hadoop入门学习笔记——七、Hive语法

视频课程地址&#xff1a;https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接&#xff1a;https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记&#xff08;汇总&#xff09; 目录 七、Hive语法7.1. 数据库相关操作7.1.1. 创建数据库7.1.2…

电脑开机快捷启动,启动菜单没有u盘怎么办

电脑开机快捷启动键找不到u盘怎么办 对于快捷启动键找不到u盘的问题&#xff0c;小编很了解其中的门道&#xff0c;因为开机找不到u盘是我们使用电脑时候的常见问题。那么我们到底要如何解决开机找不到u盘的问题呢?其实方法还是蛮简单的&#xff0c;下面小编就来教大家电脑开…

如何批量删除文件名中的空格?

如何批量删除文件名中的空格&#xff1f;这个操作适合适合什么样的场景呢&#xff1f;相信大家都有过从网上下载文件的经历&#xff0c;我们会发现很多下载的文件名称里面会包含一些空格&#xff0c;如果文件名称的空格太多的话就会对阅读造成一定的影响&#xff0c;最好的办法…

ESP32入门六(读取引脚的模拟信号[2]:信号出现误差的原因)

在之前的章节中&#xff0c;我们测试了用ESP32来接收模拟电压信号&#xff0c;在测试中&#xff0c;读取到的数据与现实存在一定的误差&#xff0c;在这一篇中&#xff0c;我们尝试了解出现误差的原因和解决方法。 对于出现的误差&#xff0c;有多种软件和硬件方面的原因: 一、…

【计算机毕业设计】SSM汽车维修预约平台

项目介绍 本项目分为前后台&#xff0c;前台为普通用户登录&#xff0c;后台为管理员登录&#xff1b; 管理员角色&#xff1a; 管理员登录,新增管理员信息,查看管理员信息,查询管理员信息,查看用户信息列表,查询用户信息,新增新闻公告,查看新闻公告,查询新闻公告,新增配件类…

04-获取认证的用户身份信息

存储用户信息的方式 获取用户信息的流程 用户提交账号和密码后,DaoAuthenticationProvider调用UserDetailsService接口实现类的loadUserByUsername()方法,该方法可以接收请求参数username的值,然后根据该值查询用户信息,最后将账号,密码,权限封装到UserDetails对象中并返回给…

通过AWS Endpoints从内网访问S3

AWS S3作为非结构化数据的存储&#xff0c;经常会有内网中的app调用的需求。S3默认是走公网访问的&#xff0c;如果内网app通过公网地址访问S3并获取数据会消耗公网带宽费用。如下图所示&#xff1a; AWS 提供了一种叫做endpoints的资源&#xff0c;这种资源可以后挂S3服务&a…

ES的使用(Elasticsearch)

ES的使用&#xff08;Elasticsearch&#xff09; es是什么&#xff1f; es是非关系型数据库&#xff0c;是分布式文档数据库&#xff0c;本质上是一个JSON 文本 为什么要用es? 搜索速度快&#xff0c;近乎是实时的存储、检索数据 怎么使用es? 1.下载es的包&#xff08;环境要…

三巨头对决:深入了解pnpm、yarn与npm

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 三巨头对决&#xff1a;深入了解pnpm、yarn与npm 前言包管理器简介npm&#xff08;Node Package Manager&#xff09;&#xff1a;Yarn&#xff1a;pnpm&#xff08;Performant Npm&#xff09;&#…

python爬虫进阶-每日一学(GIF验证码识别)

目的 学习更多的python反爬虫策略 测试网址 http://credit.customs.gov.cn/ccppserver/verifyCode/creator分析 01 下载gif图片 02 使用ddddocr逐帧识别 03 如指定字符串出现次数大于等于3&#xff0c;则认定为正确的识别结果 经验证&#xff0c;识别成功率95%源码 #!/usr…

07-C++ 异常

异常 1. 概念 异常事件&#xff08;如&#xff1a;除 0 溢出&#xff0c;数组下标越界&#xff0c;所要读取的文件不存在,空指针&#xff0c;内存不足等等&#xff09; 在C 语言对错误的处理是两种方法&#xff1a; 一是使用整型的 返回值标识错误&#xff1a;二是使用 errno…

swing快速入门(三十二)消息对话框

注释很详细&#xff0c;直接上代码 上一篇 新增内容 1.自定义对话框前列图标 2.消息对话框的若干种形式 package swing21_30;import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent;public class swing_test_30 {// 定义一个JFrameJFrame jFrame n…

Redis内存使用率高,内存不足问题排查和解决

问题现象 表面现象是系统登录突然失效&#xff0c;排查原因发现&#xff0c;使用redis查询用户信息异常&#xff0c;从而定位到redis问题 if (PassWord.equals(dbPassWord)) {map.put("rtn", 1);map.put("value", validUser);session.setAttribute("…

初识智慧城市

文章目录 智慧家居 智慧社区 智慧交通 智慧医疗 智慧教育 智慧旅游 智慧农业 智慧安防 智慧家居 利用智能语音、智能交互等技术,实现用户对家居系统各设备的远程操控和能控制如开关窗帘(窗户)、操控家用电器和照明系统、打扫卫生等操作。利用计算机视觉等技术,对被照看…

java爬虫(jsoup)如何设置HTTP代理ip爬数据

目录 前言 什么是HTTP代理IP 使用Jsoup设置HTTP代理IP的步骤 1. 导入Jsoup依赖 2. 创建HttpProxy类 3. 设置代理服务器 4. 使用Jsoup进行爬取 结论 前言 在Java中使用Jsoup进行网络爬虫操作时&#xff0c;有时需要使用HTTP代理IP来爬取数据。本文将介绍如何使用Jsoup设…

智能监控平台/视频共享融合系统EasyCVR海康设备国标GB28181接入流程

TSINGSEE青犀视频监控汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力&…