zoukankan      html  css  js  c++  java
  • iscc2016-basic-find-to-me

    额 第一题就暴力搜索了

    已知仿射加密变换为c=(11m+8)mod26,试对密文sjoyuxzr解密

    #include <stdio.h>
    
    int main(void)
    {
        int m,c;
        while(scanf("%c",&m))
        {
            c = (11 * (m -97)+ 8)%26;
            printf("%c",c+97);
        }
        return 0;
    }
    

    看了大神的代码 有所醒悟

    c= Ek(m)=(k1m+k2) mod n
    
    {
    c-k2 = k1 *m mod n
    
    令k3*k1 mod n =1
    
    得(c - k2) * k3 = m mod n
    
    m = (c - k2) * k3
    }
    
    
    m=Dk(c)=k3(c- k2) mod n(其中(k3 ×k1)mod26 = 1)
    

     

    def extendedGCD1(a, b):
        # a*xi + b*yi = ri
        if b == 0:
            return (1, 0, a)
        (x, y, r) = extendedGCD1(b, a%b)
        """
        gcd(a, b) = a*xi + b*yi
        gcd(b, a %  b) = b*xi+1 + (a - [a/b]*b)*yi+1
        gcd(a, b) = gcd(b, a %  b)   =>   a*xi + b*yi = a*yi+1 + b*(xi+1 - [a/b]*yi+1)
        xi = yi+1
        yi = xi+1 - [a/b]*yi+1
        """
        tmp = x
        x = y
        y = tmp - (a/b) * y
        return (x, y, r)
    

      

  • 相关阅读:
    UVA 10608 Friends
    UVA 10806 Dijkstra, Dijkstra.
    HDU 3715 Go Deeper
    poj1315
    poj1383
    poj1650
    poj1265
    poj1523
    RedHat9.0虚拟机安装
    注册DirectShow filter时应该注意中文路径
  • 原文地址:https://www.cnblogs.com/ailx10/p/5543773.html