湘潭大学-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.xdnf.cn/news/823756.html

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

相关文章

Hampel滤波器是一种基于中位数的离群值检测方法【异常值检测方法】

Hampel滤波器是一种基于中位数的离群值检测方法&#xff0c;也是一种线性滤波器&#xff0c;由德国数学家和统计学家John Hampel在1974年提出。它主要用于去除信号中的脉冲噪声&#xff0c;具有很强的抗干扰能力&#xff0c;因此被广泛应用于信号处理、通信系统等领域。 1.基本…

操作系统期末复习(100道)

(单选题)在计算机系统中配置操作系统的主要目的是&#xff08; &#xff09;。 A. 增强计算机系统的功能 B. 提高系统资源的利用率 C. 提高系统的运行速度 D. 合理组织系统的工作流程&#xff0c;以提高系统吞吐量 (单选题)操作系统的主要功能是管理计算机系统中的&#xff08…

WPF 消息日志打印帮助类:HandyControl+NLog+彩色控制台打印+全局异常捕捉

文章目录 前言相关文章Nlog配置HandyControl配置简单使用显示效果文本内容 全局异常捕捉异常代码运行结果 前言 我将简单的HandyControl的消息打印系统和Nlog搭配使用&#xff0c;简化我们的代码书写 相关文章 .NET 控制台NLog 使用 WPF-UI HandyControl 控件简单实战 C#更改…

【Unity动画系统】Animator有限状态机参数详解

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

Vue : 监视属性

目录 一个案例 监听属性 handler immediate vm.$watch(xxx) 深度监视 监视的简写 computed和watch之间的区别 一个案例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport"…

RO-NeRF论文笔记

RO-NeRF论文笔记 文章目录 RO-NeRF论文笔记论文概述Abstract1 Introduction2 Related Work3 Method3.1 RGB and depth inpainting network3.2 Background on NeRFs3.3 Confidence-based view selection3.4 Implementation details 4 Experiments4.1 DatasetsReal ObjectsSynthe…

OpenCV 笔记(14):图像的轮廓和轮廓的基础特征

Part11. 图像的轮廓 在该系列第三篇文章中&#xff0c;曾经简单地介绍过轮廓和轮廓发现。 11.1 轮廓的基本概念 图像的轮廓是指图像中具有相同颜色或灰度值的连续点的曲线。轮廓和边缘是有联系的&#xff0c;边缘是轮廓的基础&#xff0c;轮廓是边缘的连续集合。 轮廓和边缘的…

Java进阶(第八期): Java中递归的的使用和递归解决一些算法问题 Java中的异常机制、异常的处理逻辑 自定义异常

文章目录 一、递归1.1 递归的介绍1.2 递归的简单练习1.3 图解递归执行流程&#xff1a;1.4 使用递归完成悲波那契数列1.5 猴子吃桃子问题 二、异常三 、异常的处理逻辑3.1 try catch 捕获异常3.2 throws抛出异常 四、自定义异常 Java进阶&#xff08;第八期&#xff09; 一、递…

java三种注释方式

Java 中的注释有三种&#xff1a; 单行注释&#xff1a;通常用于解释方法内某单行代码的作用。 多行注释&#xff1a;通常用于解释一段代码的作用。 文档注释&#xff1a;通常用于生成 Java 开发文档。

re:Invent 2023技术上新|Amazon DynamoDB与OpenSearch Service的Zero-ETL集成

Amazon DynamoDB 与 Amazon OpenSearch Service 的 Zero-ETL 集成已正式上线&#xff0c;该服务允许您通过自动复制和转换您的 DynamoDB 数据来搜索数据&#xff0c;而无需自定义代码或基础设施。这种 Zero-ETL 集成减少了运营负担和成本&#xff0c;使您能够专注于应用程序。这…

Redis事务悄然而至:命令的背后故事

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 Redis事务悄然而至&#xff1a;命令的背后故事 前言redis事务概述redis事务基础事务中的命令事务的一致性与隔离性事务的异常处理并发环境下的事务结语 前言 在数字化时代&#xff0c;数据处理的要求…

[C#]opencvsharp进行图像拼接普通拼接stitch算法拼接

介绍&#xff1a; opencvsharp进行图像拼一般有2种方式&#xff1a;一种是传统方法将2个图片上下或者左右拼接&#xff0c;还有一个方法就是融合拼接&#xff0c;stitch拼接就是一种非常好的算法。opencv里面已经有stitch拼接算法因此我们很容易进行拼接。 效果&#xff1a; …

Jmeter 性能测试 —— 评估一个系统TPS与并发数!

问题&#xff1a;性能压测&#xff0c;如何评估一个系统的TPS和并发数&#xff1f; 1、对于新系统 由业务部门或开发人员预估交易量和TPS指标 可以参考公式&#xff1a;并发用户 在线用户数 * 10%。 当一个系统还没有上线时&#xff0c;我们可以预判的是这个系统准备要给多…

一篇五分生信临床模型预测文章代码复现——Figure 10.机制及肿瘤免疫浸润(九)——ssGSEA——倒数第三节

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…

车牌识别技术,如何用python识别车牌号

目录 一.前言 二.运行环境 三.代码 四.识别效果 五.参考 一.前言 车牌识别技术&#xff08;License Plate Recognition, LPR&#xff09;在交通计算机视觉&#xff08;Computer Vision, CV&#xff09;领域具有非常重要的研究意义。以下是该技术的一些扩展说明&#xff1…

VSCODE 修改Test模式下的的java jvm堆内存大小

在settings.json中添加如下语句 "java.test.config": {"vmArgs": ["-Xmx12G"]},

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…

macos下转换.dmg文件为 .iso .cdr文件的简单方法

为了让镜像文件在mac 和windows平台通用, 所以需要将.dmg格式的镜像文件转换为.iso文件, 转换方法也非常简单, 一行命令即可 hdiutil convert /path/to/example.dmg -format UDTO -o /path/to/example.iso 转换完成后的文件名称默认是 example.iso.cdr 这里直接将.cdr后缀删…

自动驾驶学习笔记(二十三)——车辆控制模型

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo开放平台9.0专项技术公开课》免费报名—>传送门 文章目录 前言 运动学模型 动力学模型 总结…

gradle下载太慢不用再烦恼了

编辑gradle-wrapper文件 使用腾讯镜像 https://mirrors.cloud.tencent.com/gradle/gradle-7.5-all.zip 来代替原来的 https\://services.gradle.org/distributions/gradle-7.5-all.zip