zoukankan      html  css  js  c++  java
  • HDU

    Problem Description
    For a positive integer n, let's denote function f(n,m) as the m-th smallest integer x that x>n and gcd(x,n)=1. For example, f(5,1)=6 and f(5,5)=11.

    You are given the value of m and (f(n,m)n)n, where ``'' denotes the bitwise XOR operation. Please write a program to find the smallest positive integer n that (f(n,m)n)n=k, or determine it is impossible.
     
    Input
    The first line of the input contains an integer T(1T10), denoting the number of test cases.

    In each test case, there are two integers k,m(1k1018,1m100).
     
    Output
    For each test case, print a single line containing an integer, denoting the smallest n. If there is no solution, output ``-1'' instead.
     
    Sample Input
    2 3 5 6 100
     
    Sample Output
    5 -1
     
    Source

    题解:

    (f(n,m)-n)igoplus n = k

    d = f(n,m)-n

    d = nigoplus k

    n = digoplus k

    ///
    ///                            _ooOoo_
    ///                           o8888888o
    ///                           88" . "88
    ///                           (| -_- |)
    ///                           O  =  /O
    ///                        ____/`---'\____
    ///                      .'  \|     |//  `.
    ///                     /  \|||  :  |||//  
    ///                    /  _||||| -:- |||||-  
    ///                    |   | \  -  /// |   |
    ///                    | \_|  ''---/''  |   |
    ///                      .-\__  `-`  ___/-. /
    ///                  ___`. .'  /--.--  `. . __
    ///               ."" '<  `.___\_<|>_/___.'  >'"".
    ///              | | :  `- \`.;` _ /`;.`/ - ` : | |
    ///                 `-.   \_ __ /__ _/   .-` /  /
    ///         ======`-.____`-.___\_____/___.-`____.-'======
    ///                            `=---='
    ///        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ///                      Buddha Bless, No Bug !
    ///
    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <cmath>
    #include <cstdlib>
    #include <queue>
    #include <stack>
    #include <vector>
    using namespace std;
    #define MAXN 100010
    #define ll long long
    
    int t, m;
    ll k, ans_n;
    
    ll cal(ll n, int m)
    {
        if(n < 1)
            return 0;
        for(ll i = n + 1;  ; i++)
            if(__gcd(n, i) == 1)
            {
                m--;
                if(m == 0)
                    return i - n;/// (i - n) = (f(n, m) - n) = d
            }
    }
    
    int main()
    {
        scanf("%d", &t);
        while(t--)
        {
            scanf("%lld%d", &k, &m);
            ans_n = -1;
            for(int d = 1; d <= 1000; d++)
            {
                if(cal(k ^ d, m) == d)
                {
                    if(ans_n == -1)
                        ans_n = k ^ d;
                    else if(ans_n > (d ^ k))/// ^ 运算的有优先度小于 <  >  ==  !=
                        ans_n = k ^ d;
                }
            }
            printf("%lld
    ", ans_n);
        }
        return 0;
    }
  • 相关阅读:
    python开发第一篇:初识python
    python开发第二篇 :python基础
    nfs下的exportfs命令和nfs客户端重新挂载
    centos7安装epel源
    vim查找替换
    keepalive基础知识
    nginx基本配置各个参数说明
    centos7下搭建nfs服务
    systemctl命令
    mariadb入门
  • 原文地址:https://www.cnblogs.com/RootVount/p/11358647.html
Copyright © 2011-2022 走看看