数数 (数学)(快速幂+同余定理)
来源:互联网 发布:linux管道符号 tail 编辑:程序博客网 时间:2024/06/06 00:48
- 数数
【问题描述】
小 Star 还不会数数。有一天他看到了一张奇怪的数表,上面的每一个数各自都由相同数字构成,比如“11111111”“66666” 。于是他想自己从 1 慢慢数到这个数字。多少 Star 有个很不好的习惯,每数到一定个数就会从头开始数起。
现在请你帮忙求出,他最后数出来的数是多少。
【输入】
第一行一个整数 Q,表示数表上总共有多少个数;
以下 Q 行每行三个整数 x、n、p,表示这一次 Star 要数 n 个连续的 x,并且每数到 p 就归零。
【输出】
输出 Q 行,按顺序表示 Star 这一次数出来的数字是多少。
【输入输出样例】
count.in
3
8 5 3
3 3 1
5 3 4
count.out
1
0
3
N 个 X 连在一起,这个数能不能直接表示出来?答案是肯定的,它等于(10^n- 1) / 9 * X。当 P 为质数时,显然 9 对模 P 有逆元,直接计算即可;若 P 不为质数,我们也只需要根据下式做一个小小的转化:
T / K % P = T % KP / K.
(证:T / K = sP + r,0 ≤ r < P,则 T = sPK + rK,0 ≤ rK < PK。 )
换言之,我们只要事先将 P 乘上 9,最终再把答案除以 9 就可以
解决不互质的情况了。
单组时间复杂度:O(logN)。
program mys;var ii,i,j,k,m,q:longint;ans,x,n,p,qq:int64;function fa(x,n:int64):int64;var t,y:int64;begin t:=x; y:=1;while n>0 do begin if n and 1=1 then y:=((y mod p)*(t mod p))mod p;t:=((t mod p)*(t mod p)) mod p;n:=n div 2;end;exit(y mod p);end;begin assign(input,'count.in'); reset(input);assign(output,'count.out'); rewrite(output);readln(q);for ii:=1 to q do begin readln(x,n,p);qq:=p;p:=p*9;ans:=fa(10,n)mod p;ans:=x*(ans-1 mod p+p) mod p;ans:=(ans div 9)mod qq;writeln(ans mod qq);end;close(input); close(output);end.
0 0
- 数数 (数学)(快速幂+同余定理)
- NYOJ88汉诺塔(一)(快速幂&同余定理)
- hdoj5363Key Set(快速幂+同余定理)
- POJ -3641Pseudoprime numbers(快速幂+同余定理)
- poj1995Raising Modulo Numbers(快速幂+同余定理)
- hdoj2035 人见人爱A^B(快速幂+同余定理)
- poj3641Pseudoprime numbers(快速幂+同余定理)
- 快速幂+同余定理
- 同余定理 + 快速幂
- 快速幂及同余定理
- Rightmost Digit(快速幂+同余定理)
- poj 1845 Sumdiv (同余定理,快速幂取余)
- Light1078(同余定理)
- 2016 (同余定理)
- Divisible [数学]同余定理
- hdu 5106 同余定理+组合数学+快速幂
- NYOJ 420 p次方求和 (快速幂+同余定理)
- POJ 1995 Raising Modulo Numbers (快速幂 +同余定理)
- 分页
- 数据专家最佳实践:数据挖掘与运维分析
- Boracay is loved by tourists along with the price is inexpensive than Manila
- 在数据仓库中代理关键字的作用
- https双向认证
- 数数 (数学)(快速幂+同余定理)
- 处理限制
- js常用知识总结02
- Makefile 命令
- 生成随即数,不足补零
- Yii2.x 中captcha 验证码使用的一些心得
- Xcode 工程文件夹xcodeproj中的pbxproj文件的剖析
- Nginx 作为代理服务器,加载JS文件报错,net::ERR_CONTENT_LENGTH_MISMATCH
- error:Execution failed for task ':app:buildInfoDebugLoader'. > Exception while doing past