励志用少的代码做高效表达


Problem describe

Programmer Rostislav got seriously interested in the Link/Cut Tree data structure, which is based on Splay trees. Specifically, he is now studying the expose procedure.
Unfortunately, Rostislav is unable to understand the definition of this procedure, so he decided to ask programmer Serezha to help him. Serezha agreed to help if Rostislav solves a simple task (and if he doesn’t, then why would he need Splay trees anyway?)
Given integers l, r and k, you need to print all powers of number k within range from l to r inclusive. However, Rostislav doesn’t want to spent time doing this, as he got interested in playing a network game called Agar with Gleb. Help him!

Input

The first line of the input contains three space-separated integers l, r and k (1 ≤ l ≤ r ≤ 1018, 2 ≤ k ≤ 109).

Output

Print all powers of number k, that lie within range from l to r in the increasing order. If there are no such numbers, print “-1” (without the quotes).


题意分析

题意:输入l,r,k,输出所有在[l,r]区间内的k的幂次。
如:输入1,10,2 输出1 2 4 8

分析:求幂次不必多说,pow()累乘快速幂都可以。
但在求解过程中,会出现爆long long的情况, 如:k的n次幂=10^18, k=1000, 此时若继续计算,就会出现10^21 的数。超过了long long的取值范围,连unsigned long long都无法储存。

解决办法是:乘法变除法。

如:将式if(pow(k, i) <= r ) 改为:if(pow(k,i-1) <= r/k) 这样就可以在long long的范围内取值了。

下面列出两种AC代码, 代码一为快速幂求法, 代码二为朴素求法

如果对快速幂不甚了解,请移步——>快速幂基本思想讲解


代码一(快速幂求法)

#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;
ll quick_power(ll a, ll q) {ll sum = 1;while(q) {if(q%2==1) sum *= a;a*=a;q /= 2;}return sum;
}
int main( ) {ll l, r, k; cin>>l>>r>>k;bool flag = true;for(ll i = 0; quick_power(k, i)<=r ; i++) {ll num = quick_power(k,i);if(num>=l) {cout <<(flag?"":" ")<< num;flag = false;}if(num > r/k) break;}if(flag) cout << -1;
return 0; }

代码二(朴素求法)

#include<iostream>
#include<cmath>
using namespace std;
typedef unsigned long long llu;
int main( ) {llu l, r, k; cin>>l>>r>>k;llu t = 1, flag=0;while(t <= r) {if(t>=l) { cout << t << ' '; flag = 1; }if(t>r/k) break;t*=k; }if(!flag) cout << -1;
return 0; }

这世界就是,一些人总在昼夜不停的努力,而另外一些人,起床就发现世界已经变了。

15行代码AC——Link/Cut Tree CodeForces - 614A(爆long long处理+快速幂讲解)相关推荐

  1. 15行代码AC——1019 数字黑洞 (20分) 甲级1069. The Black Hole of Numbers (20)(解题报告)

    立志用更少的代码做更高效的表达 PAT甲级最优题解-->传送门 Pat乙级最优化代码+题解+分析汇总-->传送门 给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非 ...

  2. 15行代码AC——ZOJ - 4118 Stones in the Bucket(思维题+优化方案)(第十届山东省ACM程序设计竞赛F题)

    励志用少的代码做高效表达. 思路分析 题意:给定n个数,问最少操作几次,使数列中的数全部相等. 操作一:将数列中任意数减一. 操作二:将数列中任意数减一.任意数加一(相当于把1挪过去) 涉及到最少的题 ...

  3. (解题报告)L1-032 Left-pad (20分)——15行代码AC

    立志用更少的代码做更高效的表达 根据新浪微博上的消息,有一位开发者不满NPM(Node Package Manager)的做法,收回了自己的开源代码,其中包括一个叫left-pad的模块,就是这个模块 ...

  4. 1032 挖掘机技术哪家强 (20分)——15行代码AC

    立志用更少的代码做更高效的表达 PAT乙级最优题解-->传送门 为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输 ...

  5. 15行代码AC——习题3-3 数数字 (UVa1225,Digit Counting)

    大意: 把n(n<=10000)个整数顺序写在一起,求0~9分别出现多少次 Sample Input 2 3 13 Sample Output 0 1 1 1 0 0 0 0 0 0 1 6 2 ...

  6. 15行代码AC——习题3-1 得分 (UVa1585,Score)

    题意概述 给出一个由O和X组成的串,统计得分,O得分为目前连续出现的O的个数,X的得分为0. 如:OOXXOXXOOO得分为:1+2+0+0+1+0+0+1+2+3=10 Sample Input 5 ...

  7. 测试点3的分析:1022 D进制的A+B (20分)——15行代码AC

    立志用更少的代码做更高效的表达 PAT乙级最优题解-->传送门 输入两个非负 10 进制整数 A 和 B (≤2​30−1),输出 A+B 的 D (1<D≤10)进制数. 输入格式: 输 ...

  8. 15行代码AC——习题5-5 复合词(Compound Words, UVa 10391)——解题报告

    励志用少的代码做高效的表达 题目(提交)链接→UVA-10391 本题实质是#include<string>头文件的substr()字符串分割函数与#include<algorith ...

  9. 模板:Link Cut Tree(LCT)

    文章目录 前言 解析 原理 rotate(x) splay(x) access(x) findroot(x) makeroot(x) split(x,y) link(x,y) cut(x,y) pus ...

最新文章

  1. oracle新建用户名和密码,Oracle安装后忘记用户名或密码+创建新登陆用户
  2. 一个基于特征向量的近似网页去重算法——term用SVM人工提取训练,基于term的特征向量,倒排索引查询相似文档,同时利用cos计算相似度...
  3. 课外扩展:使用RADIUS来集中管理***服务器(2)
  4. TensorFlow:简单的卷积层、池化层(采样层)示例
  5. k8s sealos应用安装及应用包制作教程
  6. v-model双向绑定原理_【Vue原理】VModel 白话版
  7. 2019-OO-第二单元总结
  8. Pandas 通用方法
  9. java wsdl接口地址_java如何实现webservice中wsdlLocation访问地址的可配置化
  10. Qt5.12 制作串口调试助手
  11. 换种思路去理解设计模式(上)
  12. Hadoop HA集群部署
  13. 丑小鸭课件软件测试,丑小鸭免费课件
  14. 红色警戒最新版本哪个服务器好,红色警戒2里面哪个版本最好玩?
  15. 面试:你的离职原因该怎么回答
  16. 2022年汽车配件市场分析
  17. 秋招—文思海辉笔试题
  18. 立创封装怎么导入到cadence
  19. 使用决策树和随机森林分析预测糖尿病
  20. 膜拜下-极致压缩算法成品

热门文章

  1. 常见的反爬手段和解决思路
  2. 经典|Linux:为什么性能工具需要 BPF 技术(送多本)
  3. 选择比努力更重要,面试新公司,从哪些细节能判断公司的前途?项目的好坏?...
  4. 呃... 写满数据的硬盘是否比空硬盘重?
  5. 【公开课预告】:多媒体开源PI
  6. 【声入人心:音频新体验】
  7. 【主题演讲】探讨视频行业与技术的更多挑战与机会
  8. 互动场景下的低延迟编码技术
  9. LiveVideoStack线上交流分享 (十五) —— 熟悉技术的边界,实现1+1+13
  10. 数据结构与算法之插入排序