美团笔试8-15

1.求逆序数对的个数 
def inverse_num(a):
    if a==0:
        return 0
    else:
        num_list=list(str(a))
        while num_list[-1]=='0':
            num_list.pop()
        temp=''.join(num_list[::-1])
        return temp
if __name__=='__main__':
    n=int(input())
    count=0
    list1=[]
    for i in range(1,n+1):
        if i*4==int(inverse_num(i)):
            count+=1
            list1.append(i)
            list1.append(int(inverse_num(i)))
    print(count)
    for i in range(0,len(list1),2):
        print(list1[i],list1[i+1])
没有全A,不知到错在哪里

有没有大佬可以分享今天剩下题的思路呀

#笔试题目##美团#
全部评论
4i也要小于n啊
4 回复
分享
发布于 2020-08-15 18:18
写的好麻烦,直接遍历到n/4就可以了
1 回复
分享
发布于 2020-08-15 18:37
乐元素
校招火热招聘中
官网直投
自己的IDE没问题,AC了55
点赞 回复
分享
发布于 2020-08-15 18:13
我cpp也是55
点赞 回复
分享
发布于 2020-08-15 18:14
同样55.。。只求来个大佬找找问题。。
点赞 回复
分享
发布于 2020-08-15 18:16
楼主过了多少呀?
点赞 回复
分享
发布于 2020-08-15 18:18
有规律,肯定是21和78之间加多个9
点赞 回复
分享
发布于 2020-08-15 18:18
其实这道题有规律的,但是不知道为什么,样例测规律过不了,我最后是82%,超时
点赞 回复
分享
发布于 2020-08-15 18:18
我想知道可以用本地编译器吗…一直在本地编译器写,写完了发现说不让跳出考试页面…
点赞 回复
分享
发布于 2020-08-15 18:19
枚举呀总共就5种情况
点赞 回复
分享
发布于 2020-08-15 18:24
第一题CPP写的,AC,感觉就第一题最简单 #include<iostream> #include<string> #include<map> #include<algorithm> using namespace std; int main() { int num = 0; cin >> num; map<int, int> reverseMap; int counts = 0; for (int i = 1; i <= num/4; i++) { string str1 = to_string(i * 4); string str2 = to_string(i); reverse(str1.begin(), str1.end()); if (str1 == str2) { counts++; reverseMap.insert(make_pair(i, i * 4)); } } cout << counts << endl; for (auto e : reverseMap) { cout << e.first << ' &(5528)#39; << e.second << endl; } system("pause"); return 0; }
点赞 回复
分享
发布于 2020-08-15 18:24
这个我刚开始和你一样,不过加一个判断退出就可以了
点赞 回复
分享
发布于 2020-08-15 18:24
直接枚举
点赞 回复
分享
发布于 2020-08-15 18:30
逆序数也要小于n
点赞 回复
分享
发布于 2020-08-15 18:32
暴力会超时,只需遍历到n//4+1 就结束
点赞 回复
分享
发布于 2020-08-15 22:26
for循环里面加一个break就过了 我一开始就没有加 没过 之后加了 就过了 当num*4 > n时,就直接推出了 没必要循环了
点赞 回复
分享
发布于 2020-08-15 22:47

相关推荐

点赞 2 评论
分享
牛客网
牛客企业服务