#include <iostream> #include <string> #include <cmath> #include <vector> using namespace std; string getKthNum(long long k) {     if (k == 1) {         return "4";     } else if (k == 2) {         return "7";     }     int numPos = ceil(log(k + 2.0) / log(2.0) - 1);     long long prevNum = pow(2.0, numPos) - 2;     long long nowNum = k - prevNum;     long long halfNum = pow(2.0, numPos - 1);     string postStr = getKthNum((nowNum > halfNum ? nowNum % halfNum : nowNum) + halfNum - 2);     string prevStr = (nowNum > halfNum) ? "7" : "4";     return prevStr + postStr; } int main() {     int n;     cin >> n;     vector<string> retVec;     while (n--) {         long long k;         cin >> k;                  string ret = getKthNum(k);         retVec.push_back(ret);     }     for (int i = 0; i < retVec.size(); i++) {         cout << retVec[i] << endl;     } return 0; } 从第k个数倒推有多少位,在用递归解
点赞 2

相关推荐

05-16 09:20
已编辑
中国民航大学 Java
点赞 评论 收藏
分享
03-27 17:33
门头沟学院 Java
代码飞升:同学院本,你要注意hr当天有没有回复过,早上投,还要打招呼要推销自己,不要一个劲投
点赞 评论 收藏
分享
04-08 13:31
已编辑
门头沟学院 前端工程师
D0cC:京东营收1万多亿人民币,阿里9000多亿,虽然他俩利润都没腾讯和字节多,但是很恐怖了啊,负担了多少打工人的薪水
投递拼多多集团-PDD等公司10个岗位
点赞 评论 收藏
分享
牛客网
牛客企业服务