洛谷 P1028 [NOIP2001 普及组] 数的计算(递推)

2024-03-06 22:12

本文主要是介绍洛谷 P1028 [NOIP2001 普及组] 数的计算(递推),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述: 

 


分析: 

ia[i]构造数组
111
222 21
323 31
444 41 42 421
545 51 52 521
666 61 62 63 621 631
767 71 72 73 721 731
8108 81 82 83 84 821 831 841 842 8421
910.............
1014..............
1114.............

通过上面大家大家能发现什么呢? 

a[1] = 1;

a[2] = 2;

a[3] = 2;

a[4] = a[2] + a[3] = a[i/2] + a[i/2+1] = 4;

a[5] = a[2] + a[3] = a[i/2] + a[i/2+1] = 4;

a[6] = a[3] + a[4] = a[i/2] + a[i/2+1] = 6;

a[7] = a[3] + a[4] = a[i/2] + a[i/2+1] = 6;

a[8] = a[4] + a[6] = a[i/2] + a[i/2 + 2] = 10;

a[9] = a[4] + a[6] = a[i/2] + a[i/2 + 2] = 10;

a[10] = a[5] + a[8] = a[i/2] + a[i/2 + 3] = 14;

a[11] = a[5] + a[8] = a[i/2] + a[i/2 + 3] = 14;

综上所述: 

        递推出的公式:         

a[i] = a[i/2] + a[i/2 + j];


AC代码: 

#include<iostream>using namespace std;const int N = 1010;
int a[N];int main()
{int n;cin >> n;if(n == 1) {cout << 1;}else if(n == 2){cout << 2;}else if(n == 3){cout << 2;}else{a[1] = 1,a[2] = 2,a[3] = 2;int i,j=1;for(i=4;i<=n;i++){a[i] = a[i/2 + j] + a[i/2];if(i%2!=0) j++; }cout << a[i-1] << endl;}return 0;
}

欢迎不会的小伙伴留言哦~

这篇关于洛谷 P1028 [NOIP2001 普及组] 数的计算(递推)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

uva 568 Just the Facts(n!打表递推)

题意是求n!的末尾第一个不为0的数字。 不用大数,特别的处理。 代码: #include <stdio.h>const int maxn = 10000 + 1;int f[maxn];int main(){#ifdef LOCALfreopen("in.txt", "r", stdin);#endif // LOCALf[0] = 1;for (int i = 1; i <=

poj 1113 凸包+简单几何计算

题意: 给N个平面上的点,现在要在离点外L米处建城墙,使得城墙把所有点都包含进去且城墙的长度最短。 解析: 韬哥出的某次训练赛上A出的第一道计算几何,算是大水题吧。 用convexhull算法把凸包求出来,然后加加减减就A了。 计算见下图: 好久没玩画图了啊好开心。 代码: #include <iostream>#include <cstdio>#inclu

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <

XTU 1237 计算几何

题面: Magic Triangle Problem Description: Huangriq is a respectful acmer in ACM team of XTU because he brought the best place in regional contest in history of XTU. Huangriq works in a big compa

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

计算数组的斜率,偏移,R2

模拟Excel中的R2的计算。         public bool fnCheckRear_R2(List<double[]> lRear, int iMinRear, int iMaxRear, ref double dR2)         {             bool bResult = true;             int n = 0;             dou

GPU 计算 CMPS224 2021 学习笔记 02

并行类型 (1)任务并行 (2)数据并行 CPU & GPU CPU和GPU拥有相互独立的内存空间,需要在两者之间相互传输数据。 (1)分配GPU内存 (2)将CPU上的数据复制到GPU上 (3)在GPU上对数据进行计算操作 (4)将计算结果从GPU复制到CPU上 (5)释放GPU内存 CUDA内存管理API (1)分配内存 cudaErro

Java - BigDecimal 计算分位(百分位)

日常开发中,如果使用数据库来直接查询一组数据的分位数,就比较简单,直接使用对应的函数就可以了,例如:         PERCENT_RANK() OVER(PARTITION BY 分组列名 ORDER BY 目标列名) AS 目标列名_分位数         如果是需要在代码逻辑部分进行分位数的计算,就需要我们自己写一个工具类来支持计算了 import static ja

OpenStack离线Train版安装系列—2计算节点-环境准备

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版