湘潭大学-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.mzph.cn/news/586172.shtml

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

相关文章

gitee上的vue大屏项目

在 Gitee 上,有几个值得注意的 Vue 大屏项目:vue-big-screen-plugin (Gitee): 这是一个基于 Vue3、Typescript、DataV 和 ECharts5 框架的可视化大屏项目。它使用 .vue 和 .tsx 文件构建界面,并采用新版动态屏幕适配方案。这个项目支持数据的动态刷新渲染,内部的 DataV 和 …

linux 网络系统管理 技能大赛 mail赛题配置

比赛 Postfix sdskill.org 的邮件发送服务器 支持smtps(465)协议连接&#xff0c;使用Rserver颁发的证书,证书路径/CA/cacert.pem; 创建邮箱账户“user1~user99”&#xff08;共99个用户&#xff09;&#xff0c;密码为Chinaskill20! Dovecot sdskill.org 的邮件接收服务…

如何编写一个javaAgent jar工具包超详细教程

介绍 Java Agent技术 Java Agent技术是JDK提供的用来编写Java工具的技术&#xff0c;使用这种技术生成一种特殊的jar包&#xff0c;这种jar包可以让Java程序 运行其中的代码。 Java Agent技术的两种模式 Java Agent技术实现了让Java程序执行独立的Java Agent程序中的代码…

【机组期末速成】CPU的结构与功能|CPU结构|指令周期概述|指令流水线|中断系统

&#x1f3a5; 个人主页&#xff1a;深鱼~&#x1f525;收录专栏&#xff1a;计算机组成原理&#x1f304;欢迎 &#x1f44d;点赞✍评论⭐收藏 前言&#xff1a; 最近在备战期末考试&#xff0c;所以本专栏主要是为了备战期末计算机组成原理这门考试&#xff0c;讲的比较浅显&…

Unity 关于json数据的解析方式(LitJson.dll插件)

关于json数据的解析方式&#xff08;LitJson.dll插件&#xff09; void ParseItemJson(){TextAsset itemText Resources.Load<TextAsset>("Items");//读取Resources中Items文件&#xff0c;需要将Items文件放到Resources文件夹中string itemJson itemText.te…

Flink实时电商数仓(八)

用户域登录各窗口汇总表 主要任务&#xff1a;从kafka页面日志主题读取数据&#xff0c;统计 七日回流用户&#xff1a;之前活跃的用户&#xff0c;有一段时间不活跃了&#xff0c;之后又开始活跃&#xff0c;称为回流用户当日独立用户数&#xff1a;同一个用户当天重复登录&a…

详解Keras3.0 Layer API: Dropout layer

Dropout layer 图1 标准的神经网络 图2 加了Dropout临时删除部分神经元 Dropout层的作用是在神经网络中引入正则化&#xff0c;以防止过拟合。它通过随机丢弃一部分神经元&#xff08;如图2&#xff09;的输出来减少模型对训练数据的依赖性。这样可以提高模型的泛化能力&#x…

西安电子科技大学现代密码学实验四报告

实验题目&#xff08;中文&#xff09;&#xff1a; RSA大礼包&#xff08;密码挑战赛赛题三&#xff09; 实验摘要&#xff08;中文&#xff09;&#xff1a; 本实验针对一个RSA加解密软件的加密数据进行了分析和破解。实验包括了对加密数据的截获以及尝试恢复RSA体制的相关信…

C++初阶——基础知识(函数重载与引用)

目录 1.命名冲突 2.命名空间 3.缺省参数 4.函数重载 1.函数重载的特点包括&#xff1a; 2.函数重载的好处包括&#xff1a; 3.引用 引用的特点包括 引用的主要用途包括 引用和指针 引用 指针 类域 命名空间域 局部域 全局域 第一个关键字 命名冲突 同一个项目之间冲…

[原创][R语言]股票分析实战[5]:加载股票数据

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、D…

二分查找--二分查找算法(朴素二分模板)

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 本题题目链接https://leetcode.cn/problems/binary-search/description/ 算法原理 二段性&#xff0c;我们发现这个数组可以找到某种规律将其分为两段&#xff0c;不断划分下去&#xff0c;最终可以找到target 图示 我们分…

图灵日记之java奇妙历险记--继承和多态

目录 继承概念继承语法父类成员访问子类中访问父类的成员变量子类中访问父类的成员方法 super关键字子类构造方法super和this初始化protected关键字继承方式final 关键字继承与组合 多态条件向上转型重写动态绑定&&静态绑定多态再理解向下转型多态的优缺点好处缺陷 继承…

Element|InfiniteScroll 无限滚动组件的具体使用方法

目录 InfiniteScroll 无限滚动 基本用法 详细说明 v-infinite-scroll 指令 infinite-scroll-disabled 属性 infinite-scroll-distance 属性 总结 需求背景 &#xff1a; 项目统计管理列表页面&#xff0c;数据量过多时在 IE 浏览器上面会加载异常缓慢&#xff0c;导致刚…

如何通过易舟云财务软件,查看会计账簿的明细账?

如何通过易舟云财务软件&#xff0c;查看会计账簿的明细账&#xff1f; 前言1、会计账簿2、会计明细账 财务软件操作步骤 前言 1、会计账簿 财务软件是一种用于管理和记录企业财务活动的电子工具。会计账簿是财务软件中的一个重要功能&#xff0c;用于记录和管理企业的会计信…

小程序wx:if 和hidden的区别?

在小程序中&#xff0c;wx:if 和 hidden 是用于条件渲染的两种不同方式。 选择使用哪种方式取决于具体情况。如果条件变化频繁或节点包含复杂的子节点&#xff0c;可以考虑使用 wx:if 进行条件渲染&#xff1b;如果条件变化较少且节点结构简单&#xff0c;可以使用 hidden 控制…

centos7.9安装图形远程控制桌面工具rdesktop

背景&#xff1a;受现场网络环境限制&#xff0c;有的时候会有linux远程windows的需求&#xff0c;这时候就得用上了linux上的一个远程工具了。。。 环境&#xff1a; centos7.9&#xff08;前置条件&#xff0c;需要图形化界面功能并启动&#xff09; rdesktop1.8.3 基础包 …

superset利用mysql物化视图解决不同数据授权需要写好几次中文别名的问题

背景 在使用superset时&#xff0c;给不同的人授权不同的数据&#xff0c;需要不同的数据源&#xff0c;可视化字段希望是中文&#xff0c;所以导致不同的人需要都需要去改表的字段&#xff0c;因此引入视图&#xff0c;将视图中字段名称设置为中文 原表数据 select * from …

将按键次数写入AT24C02,再读出并用1602LCD显示

#include<reg51.h> //包含单片机寄存器的头文件 #include<intrins.h> //包含_nop_()函数定义的头文件 sbit RSP2^0; //寄存器选择位&#xff0c;将RS位定义为P2.0引脚 sbit RWP2^1; //读写选择位&#xff0c;将RW位定义为P2.1引脚 s…

【面试】 Maven 的八大核心概念

Maven 的八大核心概念 在这里&#xff0c;举出这个标题&#xff0c;自然大家知道Maven是干啥的&#xff0c;就不过多进行赘述&#xff01;我们主要对于Maven的八大核心概念做一个解释补充&#xff0c;这也是我自己的一个学习历程&#xff0c;我们一起共勉&#xff01; 文章概述…

我国低代码平台汇总对比,强烈建议收藏!!!

对于低代码平台如何选择&#xff1f;在考虑功能&#xff0c;品牌知名度、契合度的同时&#xff0c;也要考虑价格。 近期整理了部分低代码平台的功能和价格汇总如下&#xff1a; 主要针对私有化部署版本进行对比&#xff1a; 微搭异行星爱速搭简道云明道云宜搭价格15w9.8K15W…