[递推]双幂序列、多幂序列、双幂积序列的和

简介: [递推]双幂序列、多幂序列、双幂积序列的和

1.双幂序列


设x,y为非负整数,试计算集合

20200320154124764.png


的元素由小到大排列的双幂序列第n项与前n项之和。


(1) 递推设计要点


集合由2的幂与3的幂组成,实际上是给出两个递推关系。

设置一维f数组,f[k]存储双幂序列的第k项。

显然,第1项也是最小项为f[1]=1(当x=y=0时)。

从第2项开始,为了实现从小到大排序,设置a,b两个变量,a为2的幂,b为3的幂,显然a≠b。

设置k循环(k=2,3,…,n,其中n为键盘输入整数),在k循环外赋初值:a=2;b=3;在k循环中通过比较选择赋值:

当a<b时,由赋值f[k]=a确定为序列的第k项;然后a=a2,即a按递推规律乘2,为后一轮比较作准备;

当a>b时,由赋值f[k]=b确定为序列的第k项;然后b=b3,即b按递推规律乘3,为后一轮比较作准备。


(2) 递推描述


a=2;b=3;                        // 为递推变量a,b赋初值  
for(k=2;k<=n;k++)
 { if(a<b)
      { f[k]=a;a=a*2;}            // 用a给f[k]赋值  
   else 
      { f[k]=b;b=b*3;}            // 用b给f[k]赋值  
 }


2.多幂序列


设x,y,z为非负整数,试计算集合


20200320154219944.png

的元素由小到大排列的多幂序列第n项与前n项之和。


(1) 递推设计


集合由2的幂、3的幂与5的幂组成,实际上给出的是3个递推关系。

显然,第1项也是最小项为1(当x=y=z=0时)。

从第2项开始,为了实现从小到大排列,设置3个变量a,b,c,a为2的幂,b为3的幂,c为5的幂,显然a,b,c互不相等。

设置k循环(k=2,3,…,n,其中n为键盘输入整数),在k循环外赋初值:a=2;b=3;c=5;s=1;在k循环中通过比较赋值:

当a<b且a<c时,由赋值f[k]=a确定为序列的第k项;然后a=a2,即a按递推规律乘2,为后一轮比较作准备;

当b<a且b<c时,由赋值f[k]=b确定为序列的第k项;然后b=b3,即b按递推规律乘3,为后一轮比较作准备。

当c<a且c<b时,由赋值f[k]=c确定为序列的第k项;然后c=c*5,即c按递推规律乘5,为后一轮比较作准备。


(2) 递推描述


a=2;b=3;c=5;                      // 为递推变量a,b,c赋初值  
for(k=2;k<=n;k++)
 { if(a<b && a<c)
      { f[k]=a;a=a*2;}            // 用a给f[k]赋值  
   else  if(b<a && b<c)
      { f[k]=b;b=b*3;}            // 用b给f[k]赋值 
   else 
      { f[k]=c;c=c*5;}            // 用c给f[k]赋值
 }


3.双幂积序列的和


由集合

20200320154300763.png

元素组成的复合幂序列,求复合幂序列的指数和x+y≤n(正整数n≤50从键盘输入)的各项之和


(1) 递推设计要点


当x+y=0时,s(1)=1;

当x+y=1时,s(1)=2+3;

当x+y=2时,s(2)=22+2×3+32=2s(1)+ 32

当x+y=3时,s(3)=23+22×3+2×32+33=2s(2)+ 33

一般地,当x+y=k时,s(k)=2s(k−1)+3k

即有递推关系:

s(k)=2s(k)+3k

其中3k可以通过变量迭代实现。这样可以省略数组,简化为一重循环实现复合幂序列求和。


(2) 递推描述


//  复合幂序列求和  
#include <stdio.h>
void main()
{int k,n;  long sum,t,s[100];
 printf("请输入幂指数和至多为n:");
 scanf("%d",&n);
 t=1;s[0]=1; sum=1;
 for(k=1;k<=n;k++)
   {t=t*3;              // 迭代得t=3^k 
    s[k]=2*s[k-1]+t;      // 实施递推 
    sum=sum+s[k];
   }
   printf("幂指数和至多为%d的幂序列之和为:%ld\n",n,sum); 
}

(3) 数据测试


请输入幂指数和至多为n:50

幂指数和至多为50的幂序列之和为:717652233

目录
相关文章
|
机器学习/深度学习 Shell 开发工具
Shell脚本编程实践——第1关:编写一个脚本,求斐波那契数列的前10项及总和
Shell脚本编程实践——第1关:编写一个脚本,求斐波那契数列的前10项及总和
2168 0
|
监控 Java 应用服务中间件
SpringBoot3---核心特性---1、快速入门
SpringBoot3---核心特性---1、快速入门
|
开发框架 网络协议 Ubuntu
【Linux】配置网络和firewall防火墙(超详细介绍+实战)
【Linux】配置网络和firewall防火墙(超详细介绍+实战)
4695 0
|
8月前
|
存储 算法 安全
.NET 平台 SM2 国密算法 License 证书生成深度解析
授权证书文件的后缀通常取决于其编码格式和具体用途。本文档通过一个示例程序展示了如何在 .NET 平台上使用国密 SM2 算法生成和验证许可证(License)文件。该示例不仅详细演示了 SM2 国密算法的实际应用场景,还提供了关于如何高效处理大规模许可证文件生成任务的技术参考。通过对不同并发策略的性能测试,开发者可以更好地理解如何优化许可证生成流程,以满足高并发和大数据量的需求。 希望这段描述更清晰地传达了程序的功能和技术亮点。
865 15
.NET 平台 SM2 国密算法 License 证书生成深度解析
|
前端开发
第一种方式:使用form表单将前端数据提交到servelt(将前端数据提交到servlet)
这篇文章介绍了如何使用form表单结合Bootstrap格式将前端数据通过action属性提交到后端的servlet,包括前端表单的创建、数据的一级和二级验证,以及后端servlet的注解和参数获取。
第一种方式:使用form表单将前端数据提交到servelt(将前端数据提交到servlet)
|
9月前
|
人工智能 运维 监控
AI辅助的运维流程自动化:实现智能化管理的新篇章
AI辅助的运维流程自动化:实现智能化管理的新篇章
1366 22
|
11月前
|
移动开发 编解码 前端开发
摸鱼必备-80款在线HTML小游戏
本文推荐了80款精彩的HTML5在线小游戏,涵盖益智、冒险、射击、体育等多种类型,适合各年龄段玩家。无需下载安装,随时随地畅玩。地址:[https://game.share888.top/](https://game.share888.top/)
2376 7
摸鱼必备-80款在线HTML小游戏
|
人工智能 搜索推荐 机器人
阿里云AI助手部署体验报告
阿里云AI助手部署体验报告
402 3
|
Android开发
08. 【Android教程】相对布局 RelativeLayout
08. 【Android教程】相对布局 RelativeLayout
322 0
|
JavaScript Java 测试技术
基于Java的网上订餐管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网上订餐管理系统的设计与实现(源码+lw+部署文档+讲解等)
605 0