题解 | 小数字

小数字

https://www.nowcoder.com/practice/faaaa4ddadb34bae88b37fcb635654f1

#include <cmath>
#include <iostream>
using namespace std;
int qmi(int a,int b){
    int res = 1;
    while(b){
        if(b&1){
            res = res*a;
        }
        b>>=1;
        a*=a;
    }
    return res;
}
int main() {
    int t;cin>>t;
    while(t--){
        int n,m;cin>>n>>m;
        int res2 = n-m;
        int res3 = n/2;
        int res1 = qmi(2,m);
        for(int i = 1;i<=m;i++){
            if(n>=10){
                n = ceil(sqrt(n));
            }
            else if(n>=3){
				int res2 = n-1;
        		int res3 = (n+1)/2;
        		int res1 = ceil(sqrt(n));
                n = min(res1,min(res2,res3));
            }
            else{
                n = n-(m-i+1);
                break;
            }
        }
        cout<<n<<'\n';
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

就是考虑根号n和2分之n和n-1的大小关系,在n小于0时只有n-1只能使n减小,选择一个范围,由于根号n下降速度快,所以优先使用根号。

活动地址https://www.nowcoder.com/discuss/726480854079250432

#牛客春招刷题训练营#
全部评论

相关推荐

求求给个offer我...:这是好事啊.jpg
我的秋招日记
点赞 评论 收藏
分享
Jing_Rainb...:小公司搞出大厂流程,要么是真缺技术大牛,要么是老板的偶像包袱😂…面完记得来更新后续!
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务