zoukankan      html  css  js  c++  java
  • HDU 1098 Ignatius's puzzle 费马小定理+扩展欧几里德算法

     题目大意:

    给定k,找到一个满足的a使任意的x都满足 f(x)=5*x^13+13*x^5+k*a*x 被65整除

    推证:

    f(x) = (5*x^12 + 13 * x^4 + ak) * x

    因为x可以任意取 那么不能总是满足 65|x

    那么必须是 65 | (5*x^12 + 13 * x^4 + ak)

    那么就是说 x^12 / 13 + x^4 / 5 + ak / 65 正好是一个整数

    假设能找到满足的a , 那么将 ak / 65 分进x^12 / 13 + x^4 / 5中得到 (x^12+t1 ) / 13 + (x^4+t2) / 5 这两项均为整数

    那么5*t1+13*t2 = ak

    而这里 13|(x^12+t1 )     5| (x^4+t2) 

    这里13 , 5均是素数

    根据费马小定理可得 x^12 = 1 mod13  x^4 = 1 mod 5

    那么t1 = 12 + 13*k1 , t2 = 4 + 5*k2

     将t1 t2带入5*t1+13*t2 = ak

    那么就是5*(12 + 13*k1) +13*(4 + 5*k2) = ak

    ->65(k1+k2)+112 = ak

    这里k已知 , 求a看做y , k1+k2为整数,看成是x即可

    那么就是求65x+ay=-112

    这里就是求扩展欧几里得了

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cmath>
     5 #include <ctime>
     6 #include <cstdlib>
     7 #include <vector>
     8 
     9 using namespace std;
    10 #define ll long long
    11 #define N 500
    12 #define pii pair<int,int>
    13 
    14 void ex_gcd(ll a , ll b , ll &x , ll &y , ll &d)
    15 {
    16     ll t;
    17     if(b==0){d=a,x=1,y=0;}
    18     else{
    19         ex_gcd(b , a%b , x , y , d);
    20         t=x , x=y , y=t-a/b*y;
    21     }
    22 }
    23 
    24 
    25 int main() {
    26    // freopen("a.in" , "r" , stdin);
    27    // freopen("out.txt" , "w" , stdout);
    28     int a;
    29     while(~scanf("%d" , &a)){
    30         ll x , y , d;
    31         ex_gcd((ll)65 , (ll)a , x , y , d);
    32         if(112%d!=0) puts("no");
    33         else{
    34             printf("%I64d
    " , ((112/d*y%65)+65)%65);
    35         }
    36     }
    37 }
  • 相关阅读:
    交换机工作原理
    MyBatis框架的使用及源码分析(一) 配置与使用
    MySQL5.6安装步骤
    mysql创建用户,并授权
    命令行访问远程mysql数据库
    [mybatis] mybatis错误:Invalid bound statement (not found)
    【大数据】每秒十万笔交易的数据架构解读
    【mybaits】Mybatis中模糊查询的各种写法
    【redis】 linux 下redis 集群环境搭建
    [linux] linux下编译安装zlib
  • 原文地址:https://www.cnblogs.com/CSU3901130321/p/4799159.html
Copyright © 2011-2022 走看看