C语言-翁恺-PTA-81-120课后练习题-03


title: C语言-翁恺-PTA-81-120课后练习题-03
tags:

  • PTA
  • C语言
    description: ’ ’
    mathjax: true
    date: 2024-04-05 22:21:00
    categories:
  • PTA

7-84 连续因子

80-以后的题目感觉都不是很好做

一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。

输入格式:

输入在一行中给出一个正整数 N(1<N<231)。

输出格式:

首先在第 1 行输出最长连续因子的个数;然后在第 2 行中按 因子1*因子2*……*因子k 的格式输出最小的连续因子序列,其中因子按递增顺序输出,1 不算在内。

输入样例:

630

输出样例:

3
5*6*7

鸣谢用户 漏穿雪 补充数据!

代码长度限制

16 KB

时间限制

400 ms

内存限制

错误代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>int main() {long n = 0;int t = 0,beg=0,sum=0,sumt=0,begt=0;int num[1000] = {0};scanf("%ld", &n);for (int i = 2; i <= n / 2; ++i) {if (n % i == 0) {num[t++] = i;//printf("%d ", i);}}//printf("\nt is %d\nt[22] is %d\n", t,num[t-1]);for (int i = 1; i <t; ++i) {if (num[i] == num[i - 1]+1) {if (i == t - 1) {sumt = i - begt+1;if (sumt > sum) {beg = begt;sum = sumt;}begt = i;}}else {sumt = i - begt;if (sumt > sum) {beg = begt;sum = sumt;}begt = i;}}printf("%d\n",sum);for (int i = beg; i < beg + sum; ++i) {printf("%d", num[i]);if (i != beg + sum - 1)    printf("*");}return 0;
}

柳神的代码

思路

**不用算连续因子最多不会超过12个,也不需要三重循环,两重循环即可,直接去计算当前部分乘积能不能整除N
**分析:1、如果只有一个因子,那么这个数只能为1或者质数。因此我们主要去计算两个及以上因数的情况。
2、在有两个及以上的数连乘中,因数的最大上限为sqrt(N) + 1
3、因此思路就是,不断构造连乘,看连乘的积是否是N的因数,如果是,则看这部分连乘的数的个数是否比已记录的多。
4、用变量first记录连乘的第一个数字,这里我把它赋初值为0,如果在寻找N的因数过程中,first没有改变,那么就表明N是1或者是一个质数~

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<math.h>long int num, temp;
int main() {scanf("%ld", &num);int first = 0, len = 0, maxn = sqrt(num) + 1;for (int i = 2; i <= maxn; i++) {int j;temp = 1;for (j = i; j <= maxn; j++) {temp *= j;if (num % temp != 0) break;}if (j - i > len) {len = j - i;first = i;}}if (first == 0) {printf("1\n%ld", num);}else {printf("%d\n", len);for (int i = 0; i < len; i++) {printf("%d", first + i);if (i != len - 1) printf("*");}}return 0;
}

7-93 水仙花数

水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写程序,计算所有N位水仙花数。

输入格式:

输入在一行中给出一个正整数N(3≤N≤7)。

输出格式:

按递增顺序输出所有N位水仙花数,每个数字占一行。

输入样例:

3

输出样例:

153
370
371
407

错误原因

运行超市,无法通过最后一个检测

抽象的点来了,Pow函数的效率还不如自己写的,自己写一个幂函数即可

错误代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<math.h>
int judge(int n,int mi) {int sum = 0, t = n;while (n) {sum += pow(n % 10, mi);if (sum > t)	return 0;n /= 10;}if (t == sum)	return 1;else return 0;
}
int main() {int n = 0;scanf("%d", &n);for (int i = pow(10, n - 1); i < pow(10, n); ++i) {if (judge(i,n))	printf("%d\n", i);}//if (judge(153))	printf("153\n");return 0;
}

正确代码:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<math.h>
int mypow(int a, int b) {int sum = 1;for (int i = 1; i <= b; ++i) {sum *= a;}return sum;
}
int judge(int n,int mi) {int sum = 0, t = n;while (n) {sum += mypow(n % 10, mi);if (sum > t)	return 0;n /= 10;}if (t == sum)	return 1;else return 0;
}
int main() {int n = 0;scanf("%d", &n);for (int i = mypow(10, n - 1); i < mypow(10, n); ++i) {if (judge(i,n))	printf("%d\n", i);}//if (judge(153))	printf("153\n");return 0;
}

7-110 求符合给定条件的整数集

给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。

输入格式:

输入在一行中给出A。

输出格式:

输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。

输入样例:

2

输出样例:

234 235 243 245 253 254
324 325 342 345 352 354
423 425 432 435 452 453
523 524 532 534 542 543

代码长度限制

16 KB

时间限制

400 ms

内存限制

错误原因

没啥好的思路,不太会写

柳神没有写这题,所以我找了一个代码量少的,暴力算法

正确代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>int main()
{int i, j, k;int n;int count = 0;scanf("%d", &n);for (i = n; i <= n + 3; i++){for (j = n; j <= n + 3; j++)for (k = n; k <= n + 3; k++)if (i != j && j != k && i != k){count++;if (count % 6 == 0)printf("%d%d%d\n", i, j, k);elseprintf("%d%d%d ", i, j, k);}}return 0;
}

7-117 整数的分类处理

这题我看不懂题目的意思,什么叫

存在整数 K 使之可以表示为 3K+1 的整数的个数、

还有什么叫做

存在整数 K 使之可以表示为 3K+2 的所有整数的平均值(精确到小数点后 1 位)

给定 N 个正整数,要求你从中得到下列三种计算结果:

  • A1 = 能被 3 整除的最大整数
  • A2 = 存在整数 K 使之可以表示为 3K+1 的整数的个数
  • A3 = 存在整数 K 使之可以表示为 3K+2 的所有整数的平均值(精确到小数点后 1 位)

输入格式:

输入首先在第一行给出一个正整数 N,随后一行给出 N 个正整数。所有数字都不超过 100,同行数字以空格分隔。

输出格式:

在一行中顺序输出 A1、A2、A3的值,其间以 1 个空格分隔。如果某个数字不存在,则对应输出NONE

输入样例 1:

8
5 8 7 6 9 1 3 10

输出样例 1:

9 3 6.5

输入样例 2:

8
15 18 7 6 9 1 3 10

输出样例 2:

18 3 NONE

代码长度限制

16 KB

时间限制

400 ms

内存限制

错误原因

看不懂题目

后来看了别人的代码才看懂了题目

中译中如下:

  • A2 = 存在整数 K 使之可以表示为 3K+1 的整数的个数

    这个的意思,就是算,这个数列中除以3取余为1的个数

  • A3 = 存在整数 K 使之可以表示为 3K+2 的所有整数的平均值(精确到小数点后 1 位)

    这个的意思,就是算,这个数列中除以3取余为2 的所有数的平均值

正确代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<limits.h>
int main()
{	double a3 = 0;int n = 0, a1 = INT_MIN, a2 = 0,p=0,t=0;scanf("%d", &n);for (int i = 1; i <= n; ++i) {scanf("%d", &p);if (p % 3 == 0 && p > a1)	a1 = p;else if (p % 3 == 1)	a2++;else if(p%3==2){a3 += p;t++;}}if(t!=0)	a3 = a3 * 1.0 / t;//printf("t is %d\na3 is %lf\n", t,a3);if (a1 == INT_MIN)printf("NONE ");else printf("%d ", a1);if (a2 == 0)printf("NONE ");else printf("%d ", a2);if (a3 == 0)printf("NONE");else printf("%.01lf", a3);return 0;
}

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

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

相关文章

多线程4

死锁 想获取到第二把锁&#xff0c;就需要执行完第一层大括号&#xff0c;想要执行完第一层大括号&#xff0c;就要先获取到第二层的锁。 synchronized (counter2){ synchronized (counter2){} } 例子:t2先启动&#xff0c;t2进行加锁后一定成功&#xff0c;但是如果t2进行二…

c++ const关键词介绍

在C中&#xff0c;const 关键字用于定义常量或指定函数参数、成员函数、成员变量等为常量&#xff0c;表示其值在程序的执行过程中不能被修改。 //1. 定义常量&#xff1a; const int MAX_SIZE 100;//2. 常量指针&#xff1a; int x 10; const int* ptr &x; // 指向整型…

基于YOLOv8的木材缺陷检测系统说明

基于YOLOv8的木材缺陷检测系统说明 一、系统概述 基于YOLOv8的木材缺陷检测系统是一个利用深度学习技术进行木材表面缺陷自动检测的智能系统。该系统通过训练YOLOv8模型&#xff0c;实现对木材表面缺陷的快速、准确识别&#xff0c;从而提高木材加工的质量控制和生产效率。 …

图数据库技术:知识图谱的存储与查询

图数据库技术&#xff1a;知识图谱的存储与查询 一、引言 在探索知识的宇宙中&#xff0c;知识图谱是组织和理解海量信息的星系图。在这张图中&#xff0c;每一个概念、实体与事物不再是孤立的点&#xff0c;而是通过关系与边相互连接&#xff0c;形成一个复杂而有机的网络。图…

mysql利用延迟复制恢复误删的表

&#xff08;1&#xff09;在主库3306中创建测试数据 (rootlocalhost) [(none)] create database test; Query OK, 1 row affected (0.00 sec) (rootlocalhost) [(none)] use test ; Database changed (rootlocalhost) [test] create table t1(id int primary key); Query OK, …

计算机网络练习-计算机网络概述与性能指标

计算机网络概述 ----------------------------------------------------------------------------------------------------------------------------- 1. 计算机网络最据本的功能的是( )。 1,差错控制 Ⅱ.路由选择 Ⅲ,分布式处理 IV.传输控制 …

3.网络编程-TCP

目录 TCP 建立连接的过程是怎样的 TCP为什么是三次握手 TCP 断开连接的过程是怎样的 TCP挥手为什么需要四次 为什么TIME_WAIT等待的时间是2MSL TCP详解之滑动窗口 TCP 半连接队列和全连接队列是什么 TCP粘包&#xff0c;拆包是怎么发生的&#xff0c;如何解决 TCP是如何…

书生·浦语大模型实战营之茴香豆:搭建你的 RAG 智能助理

书生浦语大模型实战营之茴香豆&#xff1a;搭建你的 RAG 智能助理 RAG&#xff08;Retrieval Augmented Generation&#xff09;技术&#xff0c;通过检索与用户输入相关的信息&#xff0c;并结合外部知识库来生成更准确、更丰富的回答。解决 LLMs 在处理知识密集型任务时可能遇…

高项-进度管理

成本管理就是要确保项目在批准的预算内完成。 成本的类型 成本的组成 项目成本管理储备成本基准&#xff08;需要经过批准才能进行变更&#xff09; 成本基准应急储备工作包成本&#xff08;在基准内的可以不经过批准变更&#xff09; 工作包成本活动成本活动应急储备&…

物联网实战--驱动篇之(三)LoRa(sx1278)

目录 一、LoRa简介 二、sx1278模块 三、硬件抽象层 四、SX1278初始化 五、发送时间计算 六、发送模式 七、接收模式 八、总结 一、LoRa简介 LoRa在物联网传输领域有着举足轻重的地位&#xff0c;平时大家可能比较少听说&#xff0c;因为它主要还是在行业应用&#xff0…

C语言整数和小数的存储

1.整数在内存中的存储 计算机使用二进制进行存储、运算&#xff0c;整数在内存中存储使用的是二进制补码 1.1原码、反码、补码 整数的2进制表⽰⽅法有三种&#xff0c;即 原码、反码和补码 三种表⽰⽅法均有符号位和数值位两部分&#xff0c;符号位都是⽤0表⽰“正”&am…

鸿蒙内核源码分析 (Fork 篇) | 一次调用,两次返回

第一次看到 fork 时&#xff0c;说是一次调用&#xff0c;两次返回&#xff0c;当时就懵圈了&#xff0c;多新鲜&#xff0c;真的很难理解。因为这足以颠覆了以往对函数的认知&#xff0c; 函数调用还能这么玩&#xff0c;父进程调用一次&#xff0c;父子进程各返回一次。而且只…

机器学习贝叶斯算法是什么

参考一篇理解性文章&#xff1a;如何让10岁的表弟也能理解贝叶斯公式 问&#xff1a; 机器学习贝叶斯算法是什么&#xff0c;它的会被用于分类或者回归分析吗&#xff0c;它有什么优势&#xff1f; 答&#xff1a; 机器学习中的贝叶斯算法是一种基于贝叶斯定理的算法&#…

设计原则、设计模式、设计模式项目实战

设计原则 封装、继承、多态、抽象分别可以解决哪些编程问题 封装&#xff1a;也叫做信息隐藏或数据保护访问。数据 通过暴露有限的访问接口&#xff0c;授权外部仅能通过类提供接口访问&#xff0c;对内的类private私有化属性&#xff0c;通过封装简化操作&#xff0c;让用户更…

记Postman参数化

因为需要在WEB页面上处理部分数据&#xff0c;手动操作太慢&#xff0c;所以考虑使用接口方式处理&#xff0c;因急于使用&#xff0c;用Python Request的方式&#xff0c;写代码也来得慢&#xff0c;故采用Postman加外部文件参数化方式来实现。 接口请求是Post方式&#xff0c…

Healthcare医疗健康领域常见的几个单词

有几个医疗健康领域的单词总是傻傻分不清楚 inpatient&#xff0c;住院病人 outpatient &#xff0c;门诊病人 urgentcare &#xff0c;急需护理 ambulatory&#xff0c;非卧床病人 emergency&#xff0c; 急诊&#xff08;比前面那个病情或者伤情更加严重&#xff09; wellne…

电商平台混战之下,天猫破解品牌增长奥秘

行业共识是追上风&#xff0c;才有好生意&#xff0c;但风很多时候不会只有一个方向。 4月2日&#xff0c;上海&#xff0c;TopTalk 2024天猫超级品牌私享会举行。这个活动已举办数年&#xff0c;每一年天猫都会发布新一年度的品牌经营策略&#xff0c;只是与往年不同的是&…

YOLOv9改进策略 :原创自研 | 自研MSAM注意力,通道注意力升级,魔改CBAM

💡💡💡本文自研创新改进:MSAM(CBAM升级版):通道注意力具备多尺度性能,多分支深度卷积更好的提取多尺度特征,最后高效结合空间注意力 1)作为注意力MSAM使用; 推荐指数:五星 MSCA | 亲测在多个数据集能够实现涨点,对标CBAM。 改进1结构图如下: 《YOLOv…

linux安全加固

1.登录账号加固 /etc/login.defs 创建⽤户的默认设置⽂件 grep -Ev "^#|^$" /etc/login.defs /etc/login.defs ⽂件⽤于在创建⽤户时&#xff0c;对⽤户的⼀些基本属性做默认设置&#xff0c;例如指定⽤户 UID 和 GID 的范围&#xff0c;⽤户的过期时间&#xff0…

寻找排序数组中的最小值

题目描述 已知一个长度为 n 的数组&#xff0c;预先按照升序排列&#xff0c;经由 1 到 n 次 旋转 后&#xff0c;得到输入数组。例如&#xff0c;原数组 nums [0,1,2,4,5,6,7] 在变化后可能得到&#xff1a; 若旋转 4 次&#xff0c;则可以得到 [4,5,6,7,0,1,2]若旋转 7 次…