ZZNUOJ(C/C++)基础练习1051——1060(详解版)

server/2025/2/5 20:41:38/

1051 : 求数列的和

题目描述

数列的定义如下: 
数列的第一项为item,以后各项为前一项的平方根,求数列的前n项的和。 

输入

由两个整数item(item<10000)和n(n<1000)组成,item和n的含义如前所述。 

输出

 输出该数列的和,占一行,要求精度保留2位小数。

样例输入 

84 4

样例输出

97.93

C语言版

#include<stdio.h>  // 包含标准输入输出库
#include<math.h>   // 包含数学函数库,用于调用 sqrt 函数int main()
{int item, n, i;  // 定义变量:item 为初始值,n 为迭代次数,i 为循环计数器double mid, sumN = 0;  // 定义变量:mid 用于存储当前值,sumN 用于存储累加和,初始化为 0// 从用户输入中读取初始值 item 和迭代次数 nscanf("%d%d", &item, &n);// 将初始值赋值给 mid,作为第一次迭代的起始值mid = item;// 循环 n 次,计算平方根序列的和for (i = 0; i < n; i++){// 将当前 mid 的值累加到 sumN 中sumN += mid;// 更新 mid 为当前 mid 的平方根mid = sqrt(mid);}// 输出最终的累加和,保留两位小数printf("%.2f\n", sumN);return 0;  // 程序正常结束
}

 C++版

#include<iostream>       // 包含标准输入输出流库
#include<cmath>          // 包含数学函数库,用于调用 sqrt 函数
#include<iomanip>        // 包含输入输出格式控制库,用于设置输出格式
using namespace std;     // 使用标准命名空间,避免重复书写 std::// 定义一个宏 av(y),用于设置输出精度为 y 位小数,并固定小数点
#define av(y) setprecision(y) << fixedint main()
{int item, n, i;        // 定义变量:item 为初始值,n 为迭代次数,i 为循环计数器double mid, sumN = 0;  // 定义变量:mid 用于存储当前值,sumN 用于存储累加和,初始化为 0// 从标准输入读取初始值 item 和迭代次数 ncin >> item >> n;// 将初始值 item 赋值给 mid,作为第一次迭代的起始值mid = item;// 循环 n 次,计算平方根序列的和for (i = 0; i < n; i++){// 将当前 mid 的值累加到 sumN 中sumN += mid;// 更新 mid 为当前 mid 的平方根mid = sqrt(mid);}// 输出最终的累加和,保留两位小数cout << av(2) << sumN << endl;return 0;  // 程序正常结束
}

1052 : 前n项和

题目描述

 输入n和a,求a+aa+aaa+…aa…a(n个a),如当n=3,a=2时,2+22+222的结果为246 

输入

 包含两个整数,n和a,含义如上述,你可以假定n和a都是小于10的非负整数 

输出

 输出前n项和,单独占一行

样例输入

3 2

样例输出

246

注意:前n项和对应的变量,用整形

C++版

#include<iostream>       // 包含标准输入输出流库
using namespace std;     // 使用标准命名空间,避免重复书写 std::int main()
{int a, n, i;          // 定义变量:a 为初始值,n 为迭代次数,i 为循环计数器int mid, sumN = 0;    // 定义变量:mid 用于存储当前值,sumN 用于存储累加和,初始化为 0// 从标准输入读取迭代次数 n 和初始值 acin >> n >> a;// 将初始值 a 赋值给 mid,作为第一次迭代的起始值mid = a;// 循环 n 次,生成数列并计算和for (i = 0; i < n; i++){// 将当前 mid 的值累加到 sumN 中sumN += mid;// 更新 mid 为当前 mid 的末尾追加一个 amid = mid * 10 + a;}// 输出最终的累加和cout << sumN << endl;return 0;  // 程序正常结束
}

C语言版 

#include<stdio.h>  // 包含标准输入输出库int main()
{int a, n, i;          // 定义变量:a 为初始值,n 为迭代次数,i 为循环计数器int mid, sumN = 0;    // 定义变量:mid 用于存储当前值,sumN 用于存储累加和,初始化为 0// 从标准输入读取迭代次数 n 和初始值 ascanf("%d%d", &n, &a);// 将初始值 a 赋值给 mid,作为第一次迭代的起始值mid = a;// 循环 n 次,生成数列并计算和for (i = 0; i < n; i++){// 将当前 mid 的值累加到 sumN 中sumN += mid;// 更新 mid 为当前 mid 的末尾追加一个 amid = mid * 10 + a;}// 输出最终的累加和printf("%d\n", sumN);return 0;  // 程序正常结束
}

1053 : 正弦函数

题目描述

输入x,计算上面公式的前10项和。

输入

输入一个实数x。(0<=x<=3)

输出

输出一个实数,即数列的前10项和,结果保留3位小数。

样例输入

1

样例输出

0.841

C语言版(递归+记忆化数组)代码没有问题,太高级了OJ上过不了,可借鉴思路

#include<stdio.h>
#include<math.h>
int mem[20]={0};
int factrial(int x)
{if(mem[x]) return mem[x];int mid=0;if( x == 1 || x==0){return 1;}else{mid = x * factrial(x-1);}mem[x]=mid;return mid;
}
int main()
{double mid,sumN=0,x,i;scanf("%lf",&x);mid = x;for(i=1;i<=10;i++){sumN += mid/factrial(2*i-1);mid = mid*x*x*(-1); }printf("%.3f\n",sumN);return 0;
}

代码二(通过OJ)

#include<stdio.h>  // 包含标准输入输出库int main()
{double mid1, sumN = 0, x, i;  // 定义变量:mid1 用于存储当前项的分子,sumN 用于存储级数和,x 为输入值,i 为循环计数器long long mid2;  // 定义变量:mid2 用于存储当前项的分母,使用 long long 类型以避免溢出scanf("%lf", &x);  // 从标准输入读取一个双精度浮点数 xmid1 = x;  // 将 x 赋值给 mid1mid2 = 1;  // 将 1 赋值给 mid2for (i = 1; i <= 10; i++){sumN += mid1 / mid2;  // 计算级数的每一项并累加到 sumN 中mid1 = mid1 * x * x * (-1);  // 更新 mid1 为下一项的分子mid2 = mid2 * (2 * i) * (2 * i + 1);  // 更新 mid2 为下一项的分母}printf("%.3f\n", sumN);  // 输出最终的级数和,保留三位小数return 0;  // 程序正常结束
}

C++版

#include<iostream>       // 包含标准输入输出流库
#include<iomanip>        // 包含输入输出格式控制库,用于设置输出格式
using namespace std;     // 使用标准命名空间,避免重复书写 std::// 定义一个宏 av(y),用于设置输出精度为 y 位小数,并固定小数点
#define av(y) setprecision(y) << fixedint main()
{double mid1, sumN = 0, x, i;  // 定义变量:mid1 用于存储当前项的分子,sumN 用于存储级数和,x 为输入值,i 为循环计数器long long mid2;  // 定义变量:mid2 用于存储当前项的分母,使用 long long 类型以避免溢出cin >> x;  // 从标准输入读取一个双精度浮点数 xmid1 = x;  // 将 x 赋值给 mid1mid2 = 1;  // 将 1 赋值给 mid2for (i = 1; i <= 10; i++){sumN += mid1 / mid2;  // 计算级数的每一项并累加到 sumN 中mid1 = mid1 * x * x * (-1);  // 更新 mid1 为下一项的分子mid2 = mid2 * (2 * i) * (2 * i + 1);  // 更新 mid2 为下一项的分母}cout << av(3) << sumN << endl;  // 输出最终的级数和,保留三位小数return 0;  // 程序正常结束
}

1054 : 猴子吃桃

题目描述

悟空第一天摘下桃子若干,当即吃掉一半,还不过瘾,又多吃一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。聪明的你,请帮悟空算一下,他第一天开始吃的时候桃子一共有多少个呢?

输入

输入一个数n(1<=n<=30)。

输出

输出第一天的桃子个数。

样例输入

3

样例输出

10

 C语言版

#include<stdio.h>  // 包含标准输入输出库
#include<math.h>   // 包含数学函数库(虽然本代码中未使用数学函数库的功能)int main()
{int n, mid = 1, i;  // 定义变量:n 为天数,mid 为当前桃子数量,i 为循环计数器scanf("%d", &n);    // 从标准输入读取一个整数 n// 从 2 开始循环到 n,共循环 n-1 次for (i = 2; i <= n; i++){mid = (mid + 1) * 2;  // 每次将当前值 mid 加 1 后再乘以 2}printf("%d\n", mid);  // 输出最终的 mid 值return 0;             // 程序正常结束
}

C语言(递归)

#include<stdio.h>  // 包含标准输入输出库// 定义递归函数 dfs,用于计算第 x 天的桃子数量
int dfs(int x)
{int sum = 0;  // 定义变量 sum 用于存储计算结果if (x == 1) return 1;  // 如果是第 1 天,返回 1(因为第 1 天只剩下一个桃子)else{// 递归计算前一天的桃子数量// 根据题目描述,第 x 天的桃子数量是第 x-1 天的桃子数量加 1 后再乘以 2sum = (dfs(x - 1) + 1) * 2;}return sum;  // 返回计算结果
}int main()
{int n, mid, i;  // 定义变量:n 为天数,mid 为最终结果,i 为循环计数器(虽然本代码中未使用 i)scanf("%d", &n);  // 从标准输入读取一个整数 nmid = dfs(n);  // 调用递归函数 dfs 计算第 n 天的桃子数量printf("%d\n", mid);  // 输出最终的桃子数量return 0;  // 程序正常结束
}

C++版

#include<iostream>       // 包含标准输入输出流库
using namespace std;     // 使用标准命名空间,避免重复书写 std::int main()
{int n, mid = 1, i;  // 定义变量:n 为输入的整数,mid 为1,第一天桃子数为一,i 为循环计数器cin >> n;           // 从标准输入读取一个整数 n// 从 2 开始循环到 n,共循环 n-1 次for (i = 2; i <= n; i++){mid = (mid + 1) * 2;  // 每次将当前值 mid 加 1 后再乘以 2}printf("%d\n", mid);  // 输出最终的 mid 值,即第n天桃子的数return 0;             // 程序正常结束
}

1055 : 兔子繁殖问题

题目描述

这是一个有趣的古典数学问题,著名意大利数学家Fibonacci曾提出一个问题:有一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。按此规律,假设没有兔子死亡,第一个月有一对刚出生的小兔子,问第n个月有多少对兔子?

输入

输入月数n(1<=n<=44)。

输出

输出第n个月有多少对兔子。

样例输入

3

样例输出

2

C语言版 (递归)

#include<stdio.h>
#include<math.h>// 定义递归函数 dfs,用于计算第 n 个月的兔子对数
int dfs(int x)
{int sum = 0;  // 定义变量 sum 用于存储计算结果if (x == 1 || x == 2) return 1;  // 第 1 个月和第 2 个月都只有 1 对兔子else{// 递归计算第 n 个月的兔子对数// 根据斐波那契数列的定义,第 n 个月的兔子对数等于第 n-1 个月和第 n-2 个月的兔子对数之和sum = dfs(x - 1) + dfs(x - 2);}return sum;  // 返回计算结果
}int main()
{int n, mid, i;  // 定义变量:n 为月份数,mid 为最终结果,i 为循环计数器(虽然本代码中未使用 i)scanf("%d", &n);  // 从标准输入读取一个整数 n,表示需要计算的月份mid = dfs(n);  // 调用递归函数 dfs 计算第 n 个月的兔子对数printf("%d\n", mid);  // 输出最终的结果return 0;  // 程序正常结束
}

(动态规划) 

#include<stdio.h>  // 包含标准输入输出库
int main()
{int n, mid, i;  // 定义变量:n 为月份数,mid 为中间变量(未使用),i 为循环计数器scanf("%d", &n);  // 从标准输入读取一个整数 n,表示需要计算的月份int f[n + 1];  // 定义一个数组 f,用于存储斐波那契数列的每一项,大小为 n+1f[1] = 1;      // 第 1 个月有 1 对兔子f[2] = 1;      // 第 2 个月也有 1 对兔子// 使用循环计算从第 3 个月到第 n 个月的兔子对数for (i = 3; i <= n; i++){f[i] = f[i - 1] + f[i - 2];  // 第 i 个月的兔子对数等于第 i-1 个月和第 i-2 个月的兔子对数之和}printf("%d\n", f[n]);  // 输出第 n 个月的兔子对数return 0;  // 程序正常结束
}

C++版

动态规划

#include<iostream>       // 包含标准输入输出流库
using namespace std;     // 使用标准命名空间,避免重复书写 std::int main()
{int n, i;  // 定义变量:n 为月份数,i 为循环计数器cin >> n;       // 从标准输入读取一个整数 n,表示需要计算的月份int f[n + 1];   // 定义一个数组 f,用于存储斐波那契数列的每一项,大小为 n+1f[1] = 1;       // 第 1 个月有 1 对兔子f[2] = 1;       // 第 2 个月也有 1 对兔子// 使用循环计算从第 3 个月到第 n 个月的兔子对数for (i = 3; i <= n; i++){f[i] = f[i - 1] + f[i - 2];  // 第 i 个月的兔子对数等于第 i-1 个月和第 i-2 个月的兔子对数之和}cout << f[n] << endl;  // 输出第 n 个月的兔子对数return 0;              // 程序正常结束
}

递归

#include<iostream>       // 包含标准输入输出流库
using namespace std;     // 使用标准命名空间,避免重复书写 std::// 定义递归函数 dfs,用于计算斐波那契数列的第 x 项
int dfs(int x)
{int sum = 0;  // 定义变量 sum 用于存储计算结果if (x == 1 || x == 2) return 1;  // 第 1 项和第 2 项都是 1else{// 递归计算第 x 项的值// 根据斐波那契数列的定义,第 x 项是第 x-1 项和第 x-2 项的和sum = dfs(x - 1) + dfs(x - 2);}return sum;  // 返回计算结果
}int main()
{int n, i;  // 定义变量:n 为月份数,mid 为最终结果cin >> n;       // 从标准输入读取一个整数 n,表示需要计算的月份mid = dfs(n);  // 调用递归函数 dfs 计算第 n 个月的兔子对数cout << mid;   // 输出第 n 个月的兔子对数return 0;      // 程序正常结束
}

1056 : 整存零取

题目描述

假设银行一年整存零取的月息为x,现在某人手头有一笔钱,他打算在今后5年中,每年年底取出1000元作为孩子来年的教育金,到第5年孩子毕业时刚好取完这笔钱,请编程计算第1年年初时他应存入银行多少钱。

输入

输入一个实数x,表示月息。

输出

输出一个实数,小数点后保留两位小数,占一行。

样例输入

0.01875

样例输出

2833.29

http://www.ppmy.cn/server/165228.html

相关文章

Ubuntu下Tkinter绑定数字小键盘上的回车键(PySide6类似)

设计了一个tkinter程序&#xff0c;在Win下绑定回车键&#xff0c;直接绑定"<Return>"就可以使用主键盘和小键盘的回车键直接“提交”&#xff0c;到了ubuntu下就不行了。经过搜索&#xff0c;发现ubuntu下主键盘和数字小键盘的回车键&#xff0c;名称不一样。…

DeepSeek超越ChatGPT的能力及部分核心原理

DeepSeek超越ChatGPT的能力及部分核心原理 目录 DeepSeek超越ChatGPT的能力及部分核心原理超越ChatGPT的能力核心原理超越ChatGPT的能力 推理计算能力更强:在复杂的数学计算、法律文件审查等任务中,DeepSeek的推理能力可媲美甚至超越部分国际顶尖AI模型,包括ChatGPT。例如在…

98,【6】 buuctf web [ISITDTU 2019]EasyPHP

进入靶场 代码 <?php // 高亮显示当前 PHP 文件的源代码&#xff0c;通常用于调试或展示代码&#xff0c;方便用户查看代码逻辑 highlight_file(__FILE__);// 从 GET 请求中获取名为 _ 的参数值&#xff0c;并赋值给变量 $_ // 符号用于抑制可能出现的错误信息&#xff…

1.2 基于深度学习的底层视觉技术

文章目录 高层视觉任务与底层视觉任务深度神经网络相对于传统方法的优势 高层视觉任务与底层视觉任务 计算机视觉中的任务包含高层视觉任务&#xff0c;底层视觉任务。高层视觉任务是处理语义级别相关的任务&#xff0c;例如图像分类、目标检测、图像分割等。底层视觉任务处理与…

数据结构:优先级队列— PriorityQueue

目录 一、PriorityQueue 二、PriorityQueue的构造方法 1、不带参数 2、带参数 3、用一个集合来创建 4、创建比较器 三、PriorityQueue的操作方法 1、boolean offer(E e)插入 2、E peek()获取 3、E pool()删除 4、int size()长度 5、void clear&#xff08;&#…

【25考研】考研366是否能进北航计算机复试?该怎么准备?

366分对于北航来说可能有擦边进复试的风险&#xff0c;建议同学还是尽早准备复试&#xff0c;争取逆风翻盘&#xff0c;顺利上岸&#xff01; 北航计算机复试有机试&#xff0c;而且是先机试&#xff0c;第二天再进行复试。 一、复试内容 根据以往的经验&#xff0c;材料提交的…

流式学习(简易版)

最近读论文看到了这个概念&#xff0c;感觉还挺有意思的 流形(Manifold) 广泛应用于多个领域&#xff0c;如几何学、物理学、机器学习等。流形本质上是一个局部类似于欧几里得空间的空间&#xff0c;即它在某些尺度下看起来像我们熟悉的平面或曲面&#xff0c;但整体结构可能是…

Nacos 的介绍和使用

1. Nacos 的介绍和安装 与 Eureka 一样&#xff0c;Nacos 也提供服务注册和服务发现的功能&#xff0c;Nacos 还支持更多元数据的管理&#xff0c; 同时具备配置管理功能&#xff0c;功能更丰富。 1.1. windows 下的安装和启动方式 下载地址&#xff1a;Release 2.2.3 (May …