原题链接 https://www.luogu.org/problemnew/show/P2699

P2699 【数学1】小浩的幂次运算

首先第一眼看这个题就知道要暴力枚举w^i 看是否在区间[l,r]里内就好啦,注意w=1的情况,如果不特判一下它就会一直死循环从而TLE;

我是先用一次while(w^i<l)除去前面不在区间内的i,然后再来一次while(w^i<=r)输出所有在区间内的i;

还有就是#7的数据乘出来会爆long long,用unsigned long long 也水不过去,所以我这里用的__int128,也是现学现卖啊qwq:

关于__int128的几个需要注意的点:

1.__int128前面有两个下划线;

2.讲道理的话,编译器的gcc是不支持__int128这种数据类型的,比如在codeblocks 16.01/Dev C++是无法编译的,但是提交到大部分OJ上是可以编译且能用的。C/C++标准。IO是不认识__int128这种数据类型的,因此要自己实现IO,其他的运算,与int没有什么不同;

3.__int128不能用 scanf/printf 或 cin/cout 来输入输出的,所以你需要自己写一套输入输出;

AC代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
__int128 l,r,k;
__int128 read() //自定义__int128的输入(其实就是快读)
{
char ch=getchar();
__int128 a=;
while(ch<''||ch>'')
{
ch=getchar();
}
while(ch>=''&&ch<='')
{
a=(a<<)+(a<<)+(ch^'');
ch=getchar();
}
return a;
}
void print(const __int128 x) //自定义__int128的输出,因为__int128类型的数太大了,所以我们要以字符的形式从高位到低位一个一个输出,具体做法就是递归
{
if(x<) putchar('-'); //是负数先输出负号‘-’
if(x>) print(x/); //如果x是多位数,我们除以10去找它的高位
putchar(x%+''); //最后再输出最后一位,注意后面加上‘0’
return ; //返回
}
int main()
{
l=read();
r=read();
k=read();
if(k==)
{
if(l<=&&r>=) cout<<;
else cout<<-;
return ;
}
__int128 m=,flag=;
while(m<l) //除去前面在区间外的点
{
m*=k; //这里一次一次乘过去比每次求k^i要快
}
while(m<=r) //输出再区间内的点
{
flag=; //说明有解,标记一下
print(m); //输出__int128类型的m
putchar(' ');
m*=k;
}
if(flag) cout<<-; //判断无解
return ;
}

这个题解应该不是纯正的正解(毕竟我用了__int128),仅作为参考qwq。

P2699 【数学1】小浩的幂次运算的更多相关文章

  1. 洛谷P2699小浩的幂次运算

    二分走一波,没想到题解的大佬做法 p_q 注意爆long long,所以先对数取一下上限 二分确定下限,然后输出 #include<stdio.h> #include<math.h& ...

  2. 小浩算法|一文让你学会如何用代码判断"24"点

    “24点”是一种数学游戏,正如象棋.围棋一样是一种人们喜闻乐见的娱乐活动.它始于何年何月已无从考究,但它以自己独具的数学魅力和丰富的内涵正逐渐被越来越多的人们所接受.今天就为大家分享一道关于“24点” ...

  3. 2014多校第一场 I 题 || HDU 4869 Turn the pokers(费马小定理+快速幂模)

    题目链接 题意 : m张牌,可以翻n次,每次翻xi张牌,问最后能得到多少种形态. 思路 :0定义为反面,1定义为正面,(一开始都是反), 对于每次翻牌操作,我们定义两个边界lb,rb,代表每次中1最少 ...

  4. 【微信小程序】 小程序中的递归运算/二分查找算法/Maximum call stack size exceeded

    摘要: 小程序中的递归运算/二分查找算法/Maximum call stack size exceeded 场景:最近做一个车贷计算器, 其中存在一个公式如下: /**** 总金额 * 月利率 * ( ...

  5. 数论 --- 费马小定理 + 快速幂 HDU 4704 Sum

    Sum Problem's Link:   http://acm.hdu.edu.cn/showproblem.php?pid=4704 Mean: 给定一个大整数N,求1到N中每个数的因式分解个数的 ...

  6. P3216 [HNOI2011]数学作业 (矩阵快速幂)

    P3216 [HNOI2011]数学作业 题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 NN 和 MM ,要求计算 Concatenate (1 .. N ...

  7. HDU 4704 Sum( 费马小定理 + 快速幂 )

    链接:传送门 题意:求 N 的拆分数 思路: 吐嘈:求一个数 N 的拆分方案数,但是这个拆分方案十分 cd ,例如:4 = 4 , 4 = 1 + 3 , 4 = 3 + 1 , 4 = 2 + 2 ...

  8. HDU 5895 Mathematician QSC(矩阵乘法+循环节降幂+除法取模小技巧+快速幂)

    传送门:HDU 5895 Mathematician QSC 这是一篇很好的题解,我想讲的他基本都讲了http://blog.csdn.net/queuelovestack/article/detai ...

  9. BZOJ-2326 数学作业 矩阵乘法快速幂+快速乘

    2326: [HNOI2011]数学作业 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1564 Solved: 910 [Submit][Statu ...

随机推荐

  1. JS基础_函数的简介

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. vue.js devtools图标不亮

    第一步:打开谷歌扩展程序 第二步:设置允许访问文件地址

  3. Newtonsoft.Json基本用法

    1.将一个 Object 序列化成 JSON: DataSet detail = sqlDB.GetDataSet(string.Format("select * from student ...

  4. ember server禁用Livereload server on http://localhost:49152

    ember server --live-reload=false

  5. ASE19团队项目alpha阶段model组 scrum7 记录

    本次会议于11月11日,19时整在微软北京西二号楼sky garden召开,持续15分钟. 与会人员:Jiyan He, Kun Yan, Lei Chai, Linfeng Qi, Xueqing ...

  6. C语言编译过程及相关文件

    1,C程序编译步骤 C代码编译成可执行程序经过4步: 1)预处理:宏定义展开.头文件展开.条件编译等,同时将代码中的注释删除,这里并不会检查语法 2)编译:检查语法,将预处理后文件编译生成汇编文件 3 ...

  7. instanceof解析

    https://www.zhihu.com/question/21574535/answer/18998914 Java instanceof 关键字是如何实现的? 基本理解 只是在同一个类加载器加载 ...

  8. 【转】在 Delphi 中创建 Linux 守护程序(服务进程)

    转自波哥的译文,必须转过来,太有价值了!原文地址在这里.以下为原文内容: 本文译自 原文链接,语言上做了精炼和排版的变更,以便更简洁明了. Delphi 开始支持 Linux 平台为 Delphi 开 ...

  9. sql 随机数系列

    一.把数据库把某个字段更新为随机数 DECLARE @Hour INT DECLARE @Counts INT SET @Hour =DATENAME(HOUR, GETDATE()) ) BEGIN ...

  10. 第五章、Django之模型层---单表操作

    目录 第五章.Django之模型层---单表操作 一.ORM查询 二.Django测试环境搭建 三.单表查询 1. 增 2. 改 3. 删 4. 查 第五章.Django之模型层---单表操作 一.O ...