zoukankan      html  css  js  c++  java
  • 2019HDU多校第六场 6641 TDL

    一、题目

      TDL

    二、分析  

      题意就是找一个$n$满足题目中的公式,找不到就输出$-1$。

      对于$${( f (n,m) - n )} oplus {n} =k$$

      可以转换一下变成$( f (n,m) - n )  = {k} oplus {n}$,而对于$f (n,m) - n$可以打表看一下,根据质数密度可知很小。

      由于异或相当于是一个不进位的加法,$f (n,m) - n$很小,相当于相当于$n$非常接近$k$。

      枚举$n$,由于并没有卡时限,枚举范围很宽松。

    三、AC代码

     1 #include <bits/stdc++.h>
     2 
     3 using namespace std;
     4 #define ll long long
     5 #define Min(a,b) ((a)>(b)?(b):(a))
     6 #define Max(a,b) ((a)>(b)?(a):(b))
     7 
     8 ll gcd(ll a, ll b)
     9 {
    10     return b == 0 ? a : gcd(b, a % b);
    11 }
    12 
    13 ll f(ll n, int m)
    14 {
    15     int cnt = 0;
    16     for(ll i = n + 1;;i++)
    17     {
    18         if(gcd(i, n) == 1)
    19         {
    20             cnt++;
    21         }
    22         if(cnt == m)
    23             return i;
    24     }
    25 }
    26 
    27 int main()
    28 {
    29     int T;
    30     scanf("%d", &T);
    31     while(T--)
    32     {
    33         int m;
    34         ll k, n;
    35         scanf("%lld %d", &k, &m);
    36         for(n = Max(1, k - 1000); n < k + 1000; n++)
    37         {
    38             if( f(n, m) - n == (k^n) )
    39                 break;
    40         }
    41         if(n == k + 1000)
    42             puts("-1");
    43         else
    44             printf("%lld
    ", n);
    45     }
    46     return 0;
    47 }
  • 相关阅读:
    Webservice接口和Http接口
    java多线程
    时间显示成一串阿拉伯数字
    jsp静态与动态包含的区别和联系
    解决Win10默认占用80端口
    JAVA中文乱码之解决方案
    相对路径与绝对路径的差异
    JSP静态包含和动态包含的区别和联系
    数据库Oracle
    智能指针shared_ptr的用法
  • 原文地址:https://www.cnblogs.com/dybala21/p/11320596.html
Copyright © 2011-2022 走看看