小红拿到了两个整数a和b。

小红拿到了两个整数a和b。她希望你构造两个正整数x和y满足:1、x mod y =a 2.y mod x=b 其中p mod q代表p除以q得到的余数。

输入描述:

第一行输人一个正整数t,代表询问的次数。
接下来的t行,每行输入两个整数a和b,代表一次询问。
1 < t<10000
0 < a,b ≤ 10^9

输出描述:

输出t行,每行输出两个正整数(不能大于2^31-1)。
有多解时输出任意即可。
如果无解,请输出"-1-1"即可。

示例

输入:
2
2  3
0  0
输出:
5  3
1  1

根据上述的要求,我们得输出输入多次输入输出所以我们得:

//伪代码:
int n;
cin >> n;
while(n--)
{
    
}

再根据题目中所说的:

x mod y = a

y mod x = b

我们可以写出如下代码:

//伪代码:
int a = 0, b = 0, x = 0, y = 0;
cin >> a >> b;
if (a > b)
{
    x = a, y = a + b;
}
else
{
    x = a + b, y = b;
}
if (x % y == a && y % x == b)
{
    cout << x << " " << y << endl;
}
else if (a == 0 || b == 0)
{
    cout << "-1 -1" << endl;
}
else
{
    if ((x % y == a && y % x == b))
    {
        cout << x << " " << y << endl;
    }
    else
    {
        cout << "-1 -1" << endl;
    }
}

上述代码我们发现将例子中a = 0  b = 0输入之后,发现报错,原因是除数变成了0,导致程序报错,我们单独写一个判断0这种情况的if语句:
有且仅有这一种特殊情况,其他的例如输入a = 0 b = 1或a = 1  b = 0这种的都是直接返回-1

if (a == 0 && b == 0)
{
    x = 1;
    y = 1;
    cout << x << " " << y << endl;
}

将上述代码整合:

void A()
{
     int n = 0;
     cin >> n;
    int a = 0, b = 0, x = 0, y = 0;
    while(n--)
    {
        cin >> a >> b;  //2  3
        if (a > b)
        {

            x = a, y = a + b;
        }
        else
        {
            x = a + b, y = b;

            //x = 2   y = 3
        }
        if (a == 0 && b == 0)
        {
            x = 1;
            y = 1;
            cout << x << " " << y << endl;
        }
        else if (a == 0 || b == 0)
        {
            cout << "-1 -1" << endl;
        }
        else  
        {
            if ((x % y == a && y % x == b))
            {
                cout << x << " " << y << endl;
            }
            else
            {
                cout << "-1 -1" << endl;
            }
        }
    }
}

现在看来确实蛮简单的,当时没写出来属实是我太菜了!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
小红书是一个社交电商平台,为了保护用户的数据安全和防止恶意攻击,平台采用了加密算法对一些敏感参数进行加密处理,比如x-s和x-t。逆向工程是指通过对应用程序或代码的逆向分析和解析,以获取其内部的机制、算法或逻辑流程。 要逆向解密小红书的x-s和x-t参数,通常需要进行以下步骤: 1. 获取加密的js文件:首先,我们需要获取小红书的相关js文件,可以通过抓包工具或者浏览器开发者工具获取到与加密相关的js文件。 2. 分析加密算法:通过对js文件的逆向分析,我们可以寻找到相关的加密算法或函数。一般来说,加密参数通常会用到一些常见的加密算法,比如AES、RSA、MD5等。分析加密算法的关键是找到加密所使用的密钥和加密的处理过程。 3. 提取密钥和参数:一旦我们找到了加密算法和处理过程,接下来需要尝试提取出密钥和参数。这需要根据具体的算法和代码逻辑进行实际的代码分析和编写。 4. 解密参数:当我们获取到了正确的密钥和参数后,就可以编写相应的解密函数来对加密的x-s和x-t参数进行解密。 需要注意的是,逆向工程涉及对他人软件的解密和分析,这可能涉及到法律和道德等方面的问题,建议在合法和合规的前提下使用逆向工程技术。此外,小红书作为一款商业应用,也会不断更新其加密算法和安全机制,因此逆向解密可能随着时间的推移需要不断更新和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值