湖南中医药大学OJ—1180到1189

2023-10-13 17:40

本文主要是介绍湖南中医药大学OJ—1180到1189,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

    • 1180: 习题5-7 求和
    • 1181: 习题5-8 求水仙花数
    • 1182: 习题5-9 完数
    • 1183: 习题5-10 分数序列求和
    • 1184: 习题5-11 求多次落地弹球高度
    • 1185: 习题5-12 猴子吃桃问题
    • 1186: 习题5-13 迭代法求平方根
    • 1187: 习题5-14 牛顿迭代法求方程的根
    • 1188: 习题5-15 二分法求方程的根
    • 1189: 习题6-1 筛选法求素数

1180: 习题5-7 求和

题目描述
求如下式子的和
在这里插入图片描述
请将结果定义为double类型。
注意求平方,不要用C数学库中提供的函数pow。
输入

输出
小数点后保留6位小数,末尾换行。

样例输入 Copy

样例输出 Copy
47977.928968

根据算式利用for循环AC

#include<stdio.h>
int main()
{int k,i,j;double a,d,b=0,c=0;for(j=1;j<=100;j++){b+=j;}for(i=1;i<=50;i++){a=i*i;b+=a;}for(k=1;k<=10;k++){d=1.0/k;b+=d;}printf("%lf\n",b);return 0;
}

1181: 习题5-8 求水仙花数

题目描述
输出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。
例如,153是一个水仙花数,因为153=13+53+33
输入

输出
每行输出一个水仙花数。

样例输入 Copy

样例输出 Copy
153
370
371
407

首先得到这个数的每一个位数的数值,在加起来验证是否等于这个数本身

#include<stdio.h>
#include<math.h>
int main()
{int a,b,c,n;for(n=100;n<1000;n++){a=n/100;b=n/10%10;c=n%10;if(pow(a,3)+pow(b,3)+pow(c,3)==n){printf("%d\n",n);}}return 0;
}

1182: 习题5-9 完数

题目描述
一个数如果恰好等于它的因子和,这个数就称为“完数”。例如,6的因子为1,2,3,而6=1+2+3,所以6是“完数”。
编程输出1000以内的所有完数,每个完数输出一行,并按下面的格式输出其因子:
6 its factors are 1,2,3
输入

输出
每个完数输出一行,并按下面的格式输出其因子:
? its factors are ?,?,?

样例输入 Copy

样例输出 Copy
6 its factors are 1,2,3
28 its factors are 1,2,4,7,14
496 its factors are 1,2,4,8,16,31,62,124,248

提示
因子包含1但不包含其本身。

首先是我记得当初这个输出格式把我搞得快疯了,然后这道题,先判断出这个数是否满足有因数之和等于他的条件,如果满足就先吧这个数搞出来,在逐个输出他的因数就好了,然后继续判断下一个数。

#include<stdio.h>
int main()
{int i,j,k;for(i=1;i<1000;i++){int sum=0;for(j=1;j<i;j++){if(i%j==0){sum+=j;}}if(sum==i){printf("%d its factors are ",i );for(k=1;k<i;k++){if(i%k==0){printf("%d",k);if(k<i/2)printf(",");}}printf("\n");}}return 0;
}

1183: 习题5-10 分数序列求和

题目描述
有如下分数序列
在这里插入图片描述
求出次数列的前20项之和。
请将结果的数据类型定义为double类型。
输入

输出
小数点后保留6位小数,末尾输出换行。

样例输入 Copy

样例输出 Copy
32.660261

将分子和分母分开算,数值增加都有规律,再则就是注意for里面的逻辑顺序

#include<stdio.h>
int main()
{int i=2,j=1,a,k;double m,n=0;for(k=0;k<20;k++){a=i;m=i*1.0/j;i=i+j;j=a;n+=m;}printf("%lf\n",n); return 0;
}

1184: 习题5-11 求多次落地弹球高度

题目描述
一个球从100m的高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。
求它从第一次落地时,到第N次落地时,共经过了多少米,第N次反弹多高。
输入
一个正整数N,表示球落地的次数。
输出
length=球第N次落地时所经过了距离
high=球第N次落地反弹的高度
小数点后保留4位小数。
注意:末尾输出换行。

样例输入 Copy
10
样例输出 Copy
length=199.8047
high=0.0977

计算每次的高度和下次到达的高度,再加起来

#include<stdio.h>
int main()
{int n,i;float length=100,high=100;scanf("%d",&n);for(i=0;i<n-1;i++){high=high*1.0/2;length+=high;}high=high*1.0/2;printf("length=%.4f\nhigh=%.4f\n",length,high);return 0;
}

1185: 习题5-12 猴子吃桃问题

题目描述
猴子第1填摘下若干桃子,当即吃了一半,还觉着不过瘾,又多吃了一个。第2天早晨,又将剩下的桃子吃掉一半,又多吃了一个。以后每天早晨都吃了前一天剩下的一半零一个。到第10天早上想再吃时,发现就只剩一个桃子了。求第1天共摘了多少个桃子。
输入

输出
一个整数,末尾换行。

样例输入 Copy

样例输出 Copy
1534

逆向分析一下,做个加法,首先是第一天只有一个果子,后面根具规则,每天多一个在两倍,算出十天的,就是总数

#include<stdio.h>
int main()
{int n=1,i,x=0;for(i=0;i<9;i++){n=(n+1)*2;}printf("%d",n);return 0;
}

1186: 习题5-13 迭代法求平方根

题目描述
输入一个非负实数a,用迭代法求平方根
在这里插入图片描述
求平方根的迭代公式为
在这里插入图片描述
要求前后两次求出的x的差的绝对值小于10-5
从键盘输入非负实数a和迭代初值x0,输出满足条件的xn+1
C数学库中有求绝对值的函数fabs.
输入
非负实数a和迭代初值x0(要求double类型)
输出
输入非负实数的平方根,保留6位小数,末尾换行。

样例输入 Copy
10 3
样例输出 Copy
3.162278

数学公式就直接带入变量计算就可以了

#include<stdio.h>
#include<math.h>
int main()
{double a,x0,x1;scanf("%lf %lf",&a,&x0);x1=(x0+a/x0)/2;if(fabs(x1-x0)>=pow(10,-5))//fabs就是一个求绝对值得函数{x0=x1;x1=(x0+a/x0)/2; }printf("%.6lf\n",(x1+a/x1)/2);///用do~while可以直接输出x1return 0;
}

1187: 习题5-14 牛顿迭代法求方程的根

题目描述
用牛顿迭代法求下面方程在输入初值点附近的根:
2x3-4x2+3x-6=0
要求前后两次求出的x的差的绝对值小于10-6
牛顿迭代法公式如下:
将给定给定方程写成f(x)=0的形式,在给定初值x0的情况下,按如下公式迭代计算:
xn+1=xn-f(x)/f’(x)
提示:C语言数学库中有求指数an的函数pow(a, n)以及求x绝对值的函数fabs(x)
浮点型数据请定义为双精度double类型。
输入
双精度浮点型初值x0
输出
x0附件方程的根,小数点后保留6位小数,末尾换行。

样例输入 Copy
3
样例输出 Copy
2.000000

和上面的题道理是一样的,都是将变量带入公式中进行计算,这个牛顿迭代法可以查一下资料,后面有一门数值计算会有许多计算方法,包括后面的二分法求根,可以提前学习

#include<stdio.h>///x(n+1)=x(n)-f(x(n))/f'(x(n))
#include<math.h>
int main()
{double x0,m,n,x1;scanf("%lf",&x0);//s=(2*pow(x0,3)-4*pow(x0,2)+3*x0-6)/(6*pow(x0,2)-8*x0+3);//x1=x0-s;if(fabs(x1-x0)>=pow(10,-6)){x0=x1;m=(2*pow(x0,3)-4*pow(x0,2)+3*x0-6);n=(6*pow(x0,2)-8*x0+3);x1=x0-m/n;}printf("%.6lf\n",x1);return 0;
}

1188: 习题5-15 二分法求方程的根

题目描述
用二分法求下面方程在区间(a,b)之间的根:
2x3-4x2+3x-6=0
区间端点a, b由键盘输入,确保输入区间内有根。
计算至误差小于10-6为止。
程序中,浮点型数据请定义为双精度double类型。
提示:二分法求方程根的步骤如下:
先将方程写成f(x)=0的形式,再按照如下步骤计算:
1.求出给出的两个端点之间的值fx1,fx2.当fx1fx2<0,则表明x1和x2之间必存在一根
要么就不存在,一直提示输出x1和x2.
2.一旦fx1
fx2<0,就表明在x1和x2之间有根,继续判断,求的x1和x2的中点值x0,求出fx0.
3.在判断fx0*fx1>0,则在x0和x2中间去找根,此时x1不起作用,用x0代替x1,用fx0代替fx1.
要么就在x0和x1中去找根,此时x2不起作用,用x0代替x2,用fx0代替fx2.
输入
以空格分隔的区间端点值,确保输入的区间内存在方程的根。
输出
二分法求得的方程根,小数点后保留6位小数,末尾换行。

样例输入 Copy
-10 10
样例输出 Copy
2.000000

原理题目已经说得很清楚了,有点繁杂,仔细审题

#include<stdio.h>
#include<math.h>
double val(double x)
{double y;y=2*pow(x,3)-4*pow(x,2)+3*x-6;return y;
}
int main()
{double a,b,c;scanf("%lf %lf",&a,&b);if(val(a)==0){printf("%lf\n",a);}if(val(b)==0){printf("%lf\n",b);}while(val(a)*val(b)<0){c=(a+b)*1.0/2;if(val(a)*val(c)<0){b=c;}if(val(b)*val(c)<0){a=c;}if(val(c)==0||fabs(a-b)<pow(10,-6)){printf("%lf\n",c);break;}}return 0;
}

1189: 习题6-1 筛选法求素数

题目描述
从键盘上输入一个正整数N(N<=100),用筛选法求N之内的素数
输入
正整数N
输出
0~N之间的素数,每个素数一行

样例输入 Copy
100
样例输出 Copy
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

提示
筛选法求N以内的素数
算法:
(1)挖去1;
(2)用下一个未被挖去的数P去除P后面各数,把P的倍数挖掉;
(3)检查P是否小于N的开方的整数部分,如果是,则返回2继续执行,否则就结束。
(4)剩下的数就是素数。

我承认我懒了,没看程序了,解析无o(´^`)o

#include<stdio.h>
#include<math.h>
int main()
{int n,p,i,x,a[105];scanf("%d",&n);x=sqrt(n);for(p=1;p<=n;p++)a[p]=p;a[1]=0;for(p=2;p<=x;p++){for(i=p+1;i<=n;i++){if(a[p]!=0&&a[i]!=0){if(a[i]%a[p]==0)a[i]=0;}}}for(p=1;p<=n;p++){if(a[p]!=0)printf("%d\n",a[p]);}return 0;
}

这篇关于湖南中医药大学OJ—1180到1189的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/204846

相关文章

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

二叉树经典OJ练习

个人主页:C++忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C++忠实粉丝 原创 二叉树经典OJ练习 收录于专栏【数据结构初阶】 本专栏旨在分享学习数据结构学习的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 前置说明  1. 单值二叉树 2. 相同的树 3. 对称二叉树 4. 二叉树的前序遍历 5. 二叉树中序遍历 6. 二叉树的后序遍历 7. 另一

湖南科技大学24计算机考研情况,软工学硕考数二,分数线290分,录取均分321分!

湖南科技大学(Hunan University of Science and Technology)坐落在伟人故里、人文圣地湘潭,处于长株潭核心区域,比邻湘潭九华经济技术开发区(国家级),是应急管理部、国家国防科技工业局与湖南省人民政府共建高校、“十三五”国家百所中西部高校基础能力建设工程支持高校、国家大学生文化素质教育基地、教育部本科教学工作水平评估“优秀”高校、教育部“卓越工程师教育培养计划”

链表OJ

GDUFE  在期末前再刷一次链表题  ~ 203. 移除链表元素 - 力扣(LeetCode) /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/struct ListNode* removeElements(struc

杭电OJ 1233 还是畅通工程

杭电OJ 1233 还是畅通工程 题目链接 Problem Description某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。 Input测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N

链表OJ--超详细解析

链表OJ 文章目录 链表OJ1. 反转链表2. 返回K值3. 链表的中间节点4. 回文链表5. 相交链表6. 带环链表6.1 为什么一定会相遇,有没有可能会错过,或者出现永远追不上的情况,请证明6.2 slow一次走一步,fast如果一次走3步,走4步,走5步还能追上吗,请证明 7. 带环链表27.1 为什么它们最终肯定会在入口点的位置相遇,请证明 8. 复制链表结语 1. 反

北大oj Coins

Problem: 北大oj Coins 文章目录 思路解题方法复杂度Code 思路 题目要求我们找出所有可能组成的金额总数,给定一系列硬币面值和每种硬币的数量。我们使用动态规划来解决这个问题。关键在于如何处理每种硬币数量大于1的情况,这需要对余数进行分组,以便于在遍历时能够有效地更新状态。 解题方法 我们首先初始化一个布尔数组dp,其长度为最大目标金额m加上1

【背包题】oj题库

目录 1282 - 简单背包问题 1780 - 采灵芝 1888 - 多重背包(1)​编辑 1891 - 开心的金明 2073 - 码头的集装箱 1905 - 混合背包 1282 - 简单背包问题 #include <bits/stdc++.h>using namespace std;//二维数组:dp[i][j]=max(dp[i-1][j],v[i]

Light OJ 1234 Harmonic Number 调和级数部分和

题目来源:Light OJ 1234  Harmonic Number 题意: 思路:没思路啊 这个是高数的东西 发散 n足够大时它无穷大 直接公式解 #include <cstdio>#include <cstring>#include <cmath>#include <string>#include <algorithm>#include <iostream>usi

Light OJ 1054 Efficient Pseudo Code 求n^m的约数和

题目来源:Light OJ 1054 Efficient Pseudo Code 题意:求n的m次这个数的所有的约数和 思路:首先对于一个数n = p1^a1*p2^a2*p3^a3*…*pk^ak  约束和s = (p1^0+p1^1+p1^2+…p1^a1)(p2^0+p2^1+p2^2+…p2^a2)…(pk^0+pk^1+pk^2+…pk^ak) 然后就是先求素数表 分解因子 然后求