题解 | 小数字

小数字

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

// 活动地址: 牛客春招刷题训练营 - 编程打卡活动
#include<iostream>
#include<algorithm>
#include<set>
#include<cmath>
#define int long long 

using namespace std;

void solve(){
     int n,m;
     cin>>n>>m;
     // 这题感觉又是之前在哪见过 好像是周赛之前出过
     // 直接模拟 会超时 所以得稍微优化下
     while(m--){
        if(n>4){
            if((int)sqrt(n)*(int)sqrt(n)==n)n=sqrt(n);
            else n=(int)sqrt(n)+1;
        }
        else if(n>2){
            n=n/2+(n%2?1:0);
        }
        // 这里可以优化
        else {
            cout<<n-m-1<<"\n";
            return ;
        }
     }
     cout<<n<<"\n";
    
}

signed main(){
    int T=1;
    cin>>T;
    while(T--){
        solve();
    }
    return 0;
}
// 活动地址: 牛客春招刷题训练营 - 编程打卡活动

全部评论

相关推荐

牛客ID:561366855:期望薪资多少?难以相信这简历找不到工作。说明二本电子信息专业想对口就业非常难。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务