46 条题解
-
0skydec LV 8 @ 2013-11-23 11:40:43
一道裸快速幂水题
因为每次都进m位,相当于每次x都加m,循环10^k次
即x总共前进了m*10^k的位置
那么答案就是(x+m*10^k)mod n
之后快速幂秒杀,注意边算边mod
var
x,n,m,k:int64;
function quickme(i,j:int64):int64;
var
o:int64;
begin
if j=1 then exit(i mod n);
o:=quickme(i,j div 2)mod n;
if j mod 2=0 then exit(o*o mod n)
else exit(o*o*i mod n);
end;
begin
readln(n,m,k,x);
x:=(x+m*quickme(10,k) )mod n;
writeln(x);
end. -
02013-11-18 18:33:36@
快速幂咩
答案就是 (x+10^k*m)mod n=x mod n+((10^k mod n)*(m mod n))mod n,快速幂10^k mod n即可 -
02013-11-17 09:12:19@
惨痛的教训:long long
-
02013-11-12 20:36:39@
p:=n*m div gcd(n,m) div m;
p:=m*mi(10,k,p)+x;
再dec(p,n)到1到n-1之间 秒杀 -
02013-11-12 20:12:43@
#include<cstdio>
#include<cstdlib>using namespace std;
int main()
{
freopen("circle.in","r",stdin);
freopen("circle. out","w",stdout);
int i,j,n,m,k,x;
scanf("%d%d%d%d",&n,&m,&k,&x);
for(i = 1; i <= 10; i++){
for(j = 1; j <= k; j++){
x += m;
if(x >= n) x %= n;
}
}
printf("%d",x);
//system("pause");
fclose(stdin);
fclose(stdout);
return 0;
} -
02013-11-12 13:14:19@
很简单的快速幂
信息
- ID
- 1841
- 难度
- 6
- 分类
- (无)
- 标签
- 递交数
- 6573
- 已通过
- 1791
- 通过率
- 27%
- 被复制
- 10
- 上传者