RQNOJ:PID4 数列
题目描述:http://www.rqnoj.cn/problem/4
本题并不复杂,但我还是遇到了一点阻碍,下面说明一下。起初的想法是,采用vector存储计算所有值,每增加一个新幂值项,都需要把之前vector中已有的数据加上该值再存储到vector,这也就达到了对幂值以及幂值所有组合的存储,用一个count变量计数,达到N结束即可。理论上这一方法可行,测试也通过,但是显然的是这需要较大的存储,且中间的无用功太多,参考代码如下,但此方法不推荐。
#include<iostream>#include<vector>using namespace std;int main(){int k,N;int temp = 1,count;vector<int> v;//存值cin>>k>>N;v.push_back(temp);count = 1;while(1){int presize = count;temp *= k;v.push_back(temp);count++;for(int i = 0;i<presize;i++){v.push_back(temp+v[i]);count++;if(count==N){cout<<v[count-1]<<endl;break;}} }system("pause");return 0;}
这里介绍最终通过的代码,核心思想是位运算。注意题目中的例子序列:3^0,3^1,3^0+3^1,3^2,3^0+3^2,3^1+3^2,可以认为是比特位依次为01,10,11,100,101,110...而最终的N也就是一串01序列,只需要对应位为一的幂值相加也就是最终结果了,代码大大简化。参考代码如下,轻松AC通过。
#include<iostream>
using namespace std;int main()
{int k,N;cin>>k>>N;int temp = 1;int ans = 0;while(N){if(N & 1)//末位为1?若为一则加上对应幂值ans += temp;temp *= k;N >>= 1; //右移位运算,也可用N/=2代替}cout<<ans<<endl;system("pause");return 0;
}
RQNOJ:PID4 数列相关推荐
- java 斐波拉_Java实现斐波那契数列
斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1.1.2.3.5.8.13.21.--在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n&g ...
- 剑指offer:面试题10- I. 斐波那契数列
写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 ...
- [NOI2005]维护数列
输入格式 输入文件的第 1 行包含两个数 N 和 M,N 表示初始时数列中数的个数,M 表示要进行的操作数目. 第 2 行包含 N 个数字,描述初始时的数列. 以下 M 行,每行一条命令,格式参见问题 ...
- 【BZOJ4282】慎二的随机数列 乱搞
[BZOJ4282]慎二的随机数列 Description 间桐慎二是间桐家著名的废柴,有一天,他在学校随机了一组随机数列, 准备使用他那强大的人工智能求出其最长上升子序列,但是天有不测风云,人有旦夕 ...
- 用递归法计算斐波那契数列的第n项
斐波纳契数列(Fibonacci Sequence)又称黄金分割数列,指的是这样一个数列:1.1.2.3.5.8.13.21.--在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1, ...
- 循环斐波那契数列_剑指offer #10 斐波那契数列
(递归和循环)#10 斐波那契数列 一.斐波那契数列 定义: n = 0 , f(n) = 0 n = 1 , f(n) = 1 n > 1 , f(n) = f(n-1) + f(n-2) 思 ...
- 用C语言编写:判断一个≥2的整型数是否存在于斐波那契数列中?
自己写的,感觉挺有成就感的,就展示出来吧! 判断一个≥2的整型数是否存在于斐波那契数列中? 若存在,则返回第几项:若不在,则返回-1 #include <stdio.h> long gen ...
- 算法(1)斐波那契数列
1.0 问题描述 实现斐波那契数列,求第N项的值 2.0 问题分析 斐波那契数列最简单的方法是使用递归,递归和查表法同时使用,可以降低复杂度. 根据数列特点,同时进行计算的数值其实只有3个,所以可以使 ...
- NOIP模拟题 斐波那契数列
题目大意 给定长度为$n$序列$A$,将它划分成尽可能少的若干部分,使得任意部分内两两之和均不为斐波那契数列中的某一项. 题解 不难发现$2\times 10^9$之内的斐波那契数不超过$50$个 先 ...
- C# 最快的逐一打印斐波那契结果数列的算法
用这种方法就无需将数列中的每一个元素都计算一遍了! 说多无谓,直接上代码吧! private void button5_Click(object sender, EventArgs e) { FiBo ...
最新文章
- Google Colab使用教程
- 遍历文件夹_使用JavaScript遍历本地文件夹的文件
- Docker框架使用系列教程(六)创建镜像
- hprof文件分析工具_【赵强老师】如何分析Java的内存溢出问题
- java 判断ip和port是否存活_java判断IP和端口号是否可以访问
- C 语言这么厉害,它自身是用什么语言写的?
- js layui跳转页面_js中实现页面跳转
- java 整合永中云预览模块
- 蓝牙inquiry流程之HCI_Inquiry_Result_With_RSSI和HCI Extended Inquiry Result处理
- 最简单小米设备怎么不root激活xposed框架
- Python分析《武林外传》 -----转载
- 湖南生物机电职院信息技术学院召开第一届思政工作会议
- 山西民生云登录显示服务器异常,山西民生云服务器异常
- 各类文件的文件头尾总结
- 计算机boot进入u盘启动,戴尔服务器怎么进入u盘启动模式 选择oneshotbios
- 2019广工ACM校赛决赛A题:思维题 HDU 6461 zsl 和hzy的生存挑战
- 金融之期货软件搭建,股票平台搭建,融资融券平台搭建
- mysql中高阶玩法系列(七)
- vlc集成c#_c# winform vlcPlayer播放器
- PIE SDK大气校正