博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
牛客练习赛43——B Tachibana Kanade Loves Probability(暴力,思维)
阅读量:4050 次
发布时间:2019-05-25

本文共 723 字,大约阅读时间需要 2 分钟。

数据限制:

1<=m<=n<=109
1<=k1<=k2<=109
0<=k2-k1<=105
加黑体部分说明了最大循环次数为105,因此可以用暴力求解,但必须先求出小数点后第k1位数字
我们知道编程模拟一个除法竖式就是不断的将被除数m乘10,除以除数n,再取余r作为下一步操作对象,那么要求出k1位数字,本质上就是要求第k1-1步时的r,而r等同于m×10k1-1%n,于是,我们可以用快速幂快速求出10k1-1(过程取模n,结果不影响)得到x,r=(m×x)%n。
代码如下:

#include
#include
#include
#include
typedef long long ll;using namespace std;ll quick_pow(ll x,ll y,ll mod){ ll ans=1; while(y) { if(y%2==1) { ans=(ans*x)%mod; y--; } else { y/=2; x=(x*x)%mod; } } return ans;}int main(){ int T; ll m,n,k1,k2,x; cin>>T; while(T--) { cin>>m>>n>>k1>>k2; x=quick_pow(10,k1-1,n); m=(m*x)%n; for(int i=k1;i<=k2;i++) { m*=10; cout<

Tips:做题要看清题目的限制,别看到109就被吓到,真正限制循环的是105

转载地址:http://lbdci.baihongyu.com/

你可能感兴趣的文章
iOS 扫一扫功能开发
查看>>
iOS app之间的跳转以及传参数
查看>>
iOS __block和__weak的区别
查看>>
Android(三)数据存储之XML解析技术
查看>>
Spring JTA应用之JOTM配置
查看>>
spring JdbcTemplate 的若干问题
查看>>
Servlet和JSP的线程安全问题
查看>>
GBK编码下jQuery Ajax中文乱码终极暴力解决方案
查看>>
Oracle 物化视图
查看>>
PHP那点小事--三元运算符
查看>>
解决国内NPM安装依赖速度慢问题
查看>>
Brackets安装及常用插件安装
查看>>
Centos 7(Linux)环境下安装PHP(编译添加)相应动态扩展模块so(以openssl.so为例)
查看>>
fastcgi_param 详解
查看>>
Nginx配置文件(nginx.conf)配置详解
查看>>
标记一下
查看>>
IP报文格式学习笔记
查看>>
autohotkey快捷键显示隐藏文件和文件扩展名
查看>>
Linux中的进程
查看>>
学习python(1)——环境与常识
查看>>