hdu 1211

这题就是 要你找出一个ASCII 的值x使得  :  x^e%n==num(当前输入的数,e条件已给出)

zsd:

1: ASCII0-255可以枚举

2:   =a^11   11=1011

?





1

2

3

4

5

6

7

8

9

10

11

12

int pow2( int
a, int
b )

{

    int
r = 1, base = a;

    while( b != 0 )

    {

        if( b % 2 )

            r *= base;

        base *= base;  //a^x x=1 2 4 8 16  也就是2^x

        b /= 2;

    }

    return
r;

}

3:(x*y)%d=(x%d)*(y%d)

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

#include<iostream>

using
namespace std;

bool
funtion(int
x,int e,int n,int num)

{// m^n % k

   int
b = 1;

    while
(e > 0)

    {

          if
(e & 1)

             b = (b*x)%n;

          e = e >> 1 ;

          x = (x*x)%n;

    }

    if(b==num) return
true;

    return
false;

}

int
main()

{

    int
p,q,e,l,c,n;

    while(scanf("%d%d%d%d",&p,&q,&e,&l)!=EOF)

    {

        n=p*q;

        while(l--)

        {

            scanf("%d",&c);

            for(int
i=0;i<=255;i++)

                if(funtion(i,e,n,c))

                {

                    printf("%c",i);

                    break;

                }

        }

        printf("\n");

    }

    return
0;

}

4:貌似没有用到模线性方程

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

#include<iostream>

using
namespace std;

bool
funtion(int
x,int e,int n,int num)

{// m^n % k

   int
b = 1;

    while
(e > 0)

    {

          if
(e & 1)

             b = (b*x)%n;

          e = e >> 1 ;

          x = (x*x)%n;

    }

    if(b==num) return
true;

    return
false;

}

int
main()

{

    int
p,q,e,l,c,n;

    while(scanf("%d%d%d%d",&p,&q,&e,&l)!=EOF)

    {

        n=p*q;

        while(l--)

        {

            scanf("%d",&c);

            for(int
i=0;i<=255;i++)

                if(funtion(i,e,n,c))

                {

                    printf("%c",i);

                    break;

                }

        }

        printf("\n");

    }

    return
0;

}


 

hdu 1211,码迷,mamicode.com

时间: 2024-10-03 07:48:45

hdu 1211的相关文章

HDU 1211: RSA

RSA ///@author Sycamore, ZJNU; ///@date 8/4/2017 #include<iostream> using namespace std; typedef long long ll; ll mod(ll a, ll b) { return ((a%b) + b) % b; } ll extended_euclid(ll a, ll b, ll &x, ll &y) { ll xx = y = 0; ll yy = x = 1; while 

hdu 1211 逆元

RSA Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2353    Accepted Submission(s): 1677 Problem Description RSA is one of the most powerful methods to encrypt data. The RSA algorithm is describ

HDU分类

模拟题, 枚举 1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 1049 1050 1057 1062 1063 1064 1070 1073 1075 1082 1083 1084 1088 1106 1107 1113 1117 1119 1128 1129 1144 1148 1157 1161 1170 1172 1177 1197 1200 1201 12

转载:hdu 题目分类 (侵删)

转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029. 1032.1037.1040.1048.1056.1058.1061.1070.1076.1089.1090.1091.1092.1093. 1094.1095.1096.1097.1098.1106.1108.1157.116

HDU 4148 Length of S(n)(字符串)

题目 字符串处理 题意要猜,解析见代码: /* 这题每个S(n)是描述S(n-1)值 例如: S(1)=1; S(2)=11;即描述S(1)有1个1=11 S(3)=21;即描述S(2)有2个1=21 S(4)=1211;即描述S(3)有1个2和2个1=1211 .... */ #include <cstdio> #include<iostream> #include <cstring> #include <algorithm> using namespac

HDU——PKU题目分类

HDU 模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 1049 1050 1057 1062 1063 1064 1070 1073 1075 1082 1083 1084 1088 1106 1107 1113 1117 1119 1128 1129 1144 1148 1157 1161 1170 1172 1177 1197 1200 1201

HDU 4148 Length of S(n)(规律题)

Problem Description http://acm.hdu.edu.cn/showproblem.php?pid=4148 A number sequence is defined as following: S(1)=1, S(2)=11, S(3)=21, S(4)=1211, S(5)=111221, S(6)=312211, -- Now, we need you to calculate the length of S(n). Input The input consists

HDU 6203 ping ping ping [LCA,贪心,DFS序,BIT(树状数组)]

题目链接:[http://acm.hdu.edu.cn/showproblem.php?pid=6203] 题意 :给出一棵树,如果(a,b)路径上有坏点,那么(a,b)之间不联通,给出一些不联通的点对,然后判断最少有多少个坏点. 题解 :求每个点对的LCA,然后根据LCA的深度排序.从LCA最深的点对开始,如果a或者b点已经有点被标记了,那么continue,否者标记(a,b)LCA的子树每个顶点加1. #include<Bits/stdc++.h> using namespace std;

HDU 5542 The Battle of Chibi dp+树状数组

题目:http://acm.hdu.edu.cn/showproblem.php?pid=5542 题意:给你n个数,求其中上升子序列长度为m的个数 可以考虑用dp[i][j]表示以a[i]结尾的长度为j的上升子序列有多少 裸的dp是o(n2m) 所以需要优化 我们可以发现dp的第3维是找比它小的数,那么就可以用树状数组来找 这样就可以降低复杂度 #include<iostream> #include<cstdio> #include<cstring> #include