题解 | 小数字

小数字

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;
}
// 活动地址: 牛客春招刷题训练营 - 编程打卡活动

全部评论

相关推荐

05-29 20:34
门头沟学院 C++
KarlAllen_直通春招版:得做好直接春招的准备。学历差的话,一是面试要求会比学历好的严格不少,二是就算面试通过了也会被排序。总之暑期和秋招对于学历差的就是及其不友好
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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