码迷,mamicode.com
首页 > 其他好文 > 详细

uva 11549

时间:2014-12-31 14:42:15      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:

/**
 * @brief uva 11549
 * @file 11549.cpp
 * @author mianma
 * @created 2014/12/31 11:43
 * @edited  2014/12/31 11:43
 * @type 
 * @note floyd判圈算法
 */
#include <fstream>
#include <iostream>
#include <cstring>
#include <cmath>

using namespace std;

#define max(a, b)  ((a) > (b) ? (a) : (b))
#define min(a, b)  ((a) > (b) ? (b) : (a)) 
#define abs(a)     ((a) >  0  ? (a) : (0 - (a)))
#define CLR(vec)   memset(vec, 0, sizeof(vec))

#ifdef DEBUG
ifstream in;
ofstream out;
#define CIN in
#define COUT out
#else
#define CIN cin
#define COUT cout
#endif

#define MAXB 25

typedef long long int ll;

int t, n;
ll k;

ll next(int n, ll num){
    static int buf[MAXB];
    ll tmp = num*num;
    int cnt = 0;
    while(tmp != 0){
        buf[cnt++] = tmp%10;
        tmp /= 10;
    }
    n = min(n, cnt);
    ll ans = 0;
    for(int i = 0; i < n; i++)
        ans = ans*10 + buf[--cnt];
    return ans;
}

int solve(int n, ll k){
    ll t1, t2, ans;
    t1 = t2 = ans = k;
    do{
        t1 = next(n, t1);
        t2 = next(n, t2);
        ans = max(t2, ans);
        t2 = next(n, t2);
        ans = max(t2, ans);
    }while(t1 != t2);
    return ans;
}

int main(void){
    ios_base::sync_with_stdio(0);
#ifdef DEBUG
    CIN.open("./in",  ios::in);
    COUT.open("./out",  ios::out);
#endif
    CIN >> t;
    for(int cases = 1; cases <= t; cases++){
        CIN >> n >> k;
        COUT << solve(n, k) << "\n";
    }
    return 0;
}


uva 11549

标签:

原文地址:http://my.oschina.net/u/572632/blog/362622

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!