11549 - Calculator Conundrum[暴力]

来源:互联网 发布:淘宝建盏可靠吗 编辑:程序博客网 时间:2024/05/17 08:04

直接模拟暴力就可以了,利用set判断重复,需要注意的是每一步需要计算出这个数的位数,比较简单

#include<cstdio>#include<set>#include<algorithm>using namespace std;typedef long long LL;set<LL>vis;int main(){    int T;    LL mod[20];    mod[0] = 1L;    for(int i = 1; i < 10; i++)        mod[i] = mod[i - 1] * 10;    scanf("%d",&T);    while(T--){        vis.clear();        int n;        LL  k;        scanf("%d%lld",&n,&k);        LL  ans = 0;        while(true){            if(vis.count(k)) break;            vis.insert(k);            ans = max(ans,k);            k = k * k;            //计算k的位数            LL e = k;            int v = 0;            while(e){                e /= 10;                v ++;            }            if(v > n){                k /= mod[v - n];            }            //printf("%I64d\n",k);        }        printf("%lld\n",ans);    }    return 0;}

0 0
原创粉丝点击