为什么两份代码效率差距这么大……
查看原帖
为什么两份代码效率差距这么大……
932039
lzy20091001楼主2023/7/22 10:34

代码1,只过了1个点,我觉得这个反而应该快一点才对啊

测评信息

#include <iostream>
#include <string>
#include <cmath>
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    long long n, len;
    string str;
    cin >> str >> n;
    len = str.length();
    while (len < n)
        len = len << 1;
    while (n > str.length())
    {
        
        len = len >> 1;
        if (n == len + 1)
            n = len;
        else
            n = n - 1 - len;
    }
    cout << str[n - 1] << "\n";
    return 0;
}


代码2,秒过

测评信息

#include <iostream>
#include <string>
#include <cmath>
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    long long n, len;
    string str;
    cin >> str >> n;
    while (n > str.length())
    {
        len = str.length();
        while (len < n)
            len = (len << 1);
        len = len >> 1;
        if (n == len + 1)
            n = len;
        else
            n = n - 1 - len;
    }
    cout << str[n - 1] << "\n";
    return 0;
}

2023/7/22 10:34
加载中...