题解

46 条题解

  • 0
    @ 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.

  • 0
    @ 2013-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即可

  • 0
    @ 2013-11-17 09:12:19

    惨痛的教训:long long

  • 0
    @ 2013-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之间 秒杀

  • 0
    @ 2013-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;
    }

  • 0
    @ 2013-11-12 13:14:19

    很简单的快速幂

信息

ID
1841
难度
6
分类
(无)
标签
递交数
6573
已通过
1791
通过率
27%
被复制
10
上传者