题目描述

给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是:
1,3,4,9,10,12,13,…
(该序列实际上就是:30,31,30+31,32,30+32,31+32,30+31+32,…)
请你求出这个序列的第N项的值(用10进制数表示)。
例如,对于k=3,N=100,正确答案应该是981。

输入

只有1行,为2个正整数,用一个空格隔开:
k N
(k、N的含义与上述的问题描述一致,且3≤k≤15,10≤N≤1000)。

输出

计算结果,是一个正整数(在所有的测试数据中,结果均不超过2.1*10^9)。(整数前不要有空格和其他符号)。

样例输入

3 100

样例输出

981

解题代码

基本思路:
拿出草稿纸和笔,计算发现基本满足以下规律:

a1 = 1
a2 = k
a3 = a1+a2
a4 = k^2
a5 = a1 + a4
a6 = a2 + a4
a7 = a3 + a4
a8 = k^3
a9 = a1 + a8
a10 = a2 + a8
a11 = a3 + a8
a12 = a4 + a8
...
a16 = k^4
a17 = a1 + a16
....
#include <iostream>
#include <cmath>
using namespace std;/*** 判断 x 是不是 2 的 k(k为正整数)次方*/
bool judgePow2(int x)
{int y = log(x) / log(2);int result = pow(2,y);return result == x;
}/*** 递归*/
int add(int n, int k)
{if(n==1) return 1;if(n==2) return k;if(judgePow2(n) == true) {int p = log(n)/log(2);int result = pow(k,p);return result;}int temp = log(n)/log(2);int base = pow(k,temp);int temp2 = pow(2,temp);return base + add(n-temp2,k);
}int main()
{int m,n;cin>>m;cin>>n;cout<<add(n,m)<<endl;return 0;
}

总结

这个题目本身不难,但是千万别被自己绕晕了……另外,这是我第一次自己用递归解决问题(除了那个路人皆知的阶乘这类的),值得记录一下。

Smileyan
2019年9月16日

【OJ】把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列相关推荐

  1. 绘制自己组合的k线图_短线投资者必备的四种双K线组合抄底技巧,次次选中黑马股,精准率超高...

    (本文由公众号越声投研(yslcwh)整理,仅供参考,不构成操作建议.如自行操作,注意仓位控制和风险自负.) 股市里有一句话叫做:"新手死于追高,老手死于抄底",讲的是股市里大多数 ...

  2. 声网在线K歌房解决方案:一站式接入版权曲库与K歌组件

    9月8日,实时互动云服务商声网Agora在北京举办主题为"K歌有声·想唱就唱"的发布会,正式发布了在线K歌房场景化解决方案,开发者与企业可一站式接入海量正版曲库与K歌组件.场景功能 ...

  3. c语言判断数组里的数据先递增后递减,查找两个有序序数组(一个递增、一个递减)中第K大的数...

    题目不难,关键是边界条件要想清楚.先写一个时间复杂度为O(K) 的解法. #include using namespace std; //a[] increase //b[] decrease //u ...

  4. 373. Find K Pairs with Smallest Sums 找出求和和最小的k组数

    [抄题]: You are given two integer arrays nums1 and nums2 sorted in ascending order and an integer k. D ...

  5. 算法—2,记一个自己的算法题 计算数字k在0到n中的出现的次数,k可能是0~9的一个值

    3 计算数字k在0到n中的出现的次数,k可能是0~9的一个值 例如n=12,k=1,在 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],我们发现1出现了5次 (1 ...

  6. python 计算数字 k 在 0 到 n 中的出现的次数,k 可能是 0~9 的一个值

    3. 统计数字 中文English 计算数字 k 在 0 到 n 中的出现的次数,k 可能是 0~9 的一个值. Example 样例 1: 输入: k = 1, n = 1 输出: 1 解释: 在 ...

  7. 信息学奥赛一本通 1176:谁考了第k名 | OpenJudge NOI 1.10 01:谁考了第k名

    [题目链接] ybt 1176:谁考了第k名 OpenJudge NOI 1.10 01:谁考了第k名 [题目考点] 1. 结构体 排序 [君义精讲]排序算法 2. printf %g输出 为简洁输出 ...

  8. 698. 划分为k个相等的子集:给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。

    题目描述 给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等. 示例 1: 输入: nums = [4, 3, 2, 3, 5, 2, 1], k ...

  9. xm在线转换成mp3_全民K歌月花费25万,95后表示在线K歌可以换一种玩法

    作者:田巧云,新零售商业评论高级编辑 "在线K歌有望进入3.0时代,开放出更多赛道." "来左边儿,跟我一起画个龙,在你右边儿,画一道彩虹:来左边儿,跟我一起画彩虹,在你 ...

最新文章

  1. Android语音信号波形显示
  2. LINUX创建www的用户组和用户,并且不允许登录权限:
  3. 2020年,最适合AI的5种编程语言
  4. ubuntu配置android开发环境和编译源码遇到的一些问题
  5. Django套用现成模板,导入css,js,images等文件【转】
  6. 初始化方法-创建对象时自动调用初始化方法
  7. 阿里云云效如何保障双11大型项目管理
  8. jQuery实现一个图片左右滚动
  9. redis:hash数据类型与操作
  10. java 日期 相差的天数_JAVA计算两个日期之间相差的天数
  11. Java实现redis管道
  12. 数据库---连接查询,数据表之间的并交集关系
  13. 解决安装mysql动态库libstdc++.so.6、libc.so.6版本过低问题
  14. Elasticsearch 监控和优化(持续)
  15. js radio 获值
  16. 视觉SLAM应用(一)------AR发展的理解
  17. HTML|按钮和多选框
  18. 【计算机网络】4-41假定网络中的路由器B的路由表有如下的项目(这三列分别表示“目的网络”、“距离”和“下一跳路由器”):
  19. 神经网络从产生到现在的发展历史--科普
  20. JDK安装配置-只需两步即可(附jdk安装包,win10系统)

热门文章

  1. SQL注入(SQL Injection)类型和sqlmap语句编写的的逻辑关系
  2. c#使用NPOI保存excel格式xlsx打开文件部分内容错误问题
  3. 【Ukey】C#或者Java对Ukey的判断操作
  4. Mac下的程序员开发环境搭建
  5. mysql 将xml插入数据库_从xml文档中读取数据并插入mysql数据库中
  6. 中望CAD2020 .NET二次开发(C#)
  7. C++智能指针:更简单、更高效的内存管理方法
  8. 2 - 数字图像处理基础
  9. FME处理表格转置的3种方式
  10. MacBook Air 2014 os x 10.9.5无法升级的问题