• BZOJ1406 [AHOI2007]密码箱


    什么神奇的数论题。。。

    x2 ≡ 1 (mod n)      =>

    x2 = k * n + 1        =>

    n | (x + 1) * (x - 1)

    令n = a * b,则

    (a | x + 1 且 b | x - 1) 或 (a| x - 1 且 b | x + 1)

    于是暴力枚举a ∈ [1, sqrt(n)] 就好了

    我比较懒,直接存到set里去了

     1 /**************************************************************
     2     Problem: 1406
     3     User: rausen
     4     Language: C++
     5     Result: Accepted
     6     Time:36 ms
     7     Memory:808 kb
     8 ****************************************************************/
     9  
    10 #include <cstdio>
    11 #include <set>
    12  
    13 using namespace std;
    14 typedef long long ll;
    15 typedef set <ll> :: iterator ITER;
    16  
    17 set <ll> S;
    18 ll n;
    19  
    20 int main() {
    21   int i, k;
    22   ll a, b, x;
    23   scanf("%lld
    ", &n);
    24   for (i = 1; i * i <= n; ++i)
    25     if (n % i == 0) {
    26       a = i, b = n / i;
    27       for (k = 0; (x = b * k + 1) < n; ++k)
    28     if ((x + 1) % a == 0)
    29       S.insert(x);
    30       for (k = 1; (x = b * k - 1) < n; ++k)
    31     if ((x - 1) % a == 0)
    32       S.insert(x);
    33     }
    34   for (ITER it = S.begin(); it != S.end(); ++it)
    35     printf("%lld
    ", *it);
    36   return 0;
    37 }
    View Code
    By Xs酱~ 转载请说明 博客地址:http://www.cnblogs.com/rausen
  • 相关阅读:
    JetBrains全家桶破解-Golang-Pycharm-IDEA等-不分平台
    k8s node update kernel
    k8s 图解
    k8s孤儿卷的问题
    k8s相关工作中常用命令
    AMQ死信引发宕机的问题
    StackStorm简介之actions
    DRF 使用入门
    python装饰器的简单实用
    type和object的关系
  • 原文地址:https://www.cnblogs.com/rausen/p/4294382.html
Copyright © 2020-2023  润新知