zoukankan      html  css  js  c++  java
  • uva 11549

    简单题;

     1 #include<cstdio>
     2 #include<set>
     3 using namespace std;
     4 int t,n,k;
     5 set<int>s;
     6 int wei[20];
     7 void next()
     8 {
     9     if(k==0)return;
    10     long long kk=(long long)k*k;
    11     k=0;
    12     int cnt=0;
    13     while(kk>0)
    14     {
    15         wei[cnt++]=kk%10;
    16         kk/=10;
    17     }
    18     for(int i=0;i<n;i++)
    19         k=k*10+wei[--cnt];
    20 }
    21 
    22 int main()
    23 {
    24 
    25     scanf("%d",&t);
    26     while(t--)
    27     {
    28         s.clear();
    29         scanf("%d%d",&n,&k);
    30         int ans=k;
    31         while(!s.count(k))
    32         {
    33             s.insert(k);
    34             ans=max(ans,k);
    35             next();
    36         }
    37         printf("%d
    ",ans);
    38     }
    39     return 0;
    40 }
    View Code

    这个用floyd判圈法来做实在是太神奇了!

    一个每回合next一次,另外一个每回合next两次;

    直到他们相等;

    虽然在next上多计算了几次;

    但是在查询上就少了很多的空间和时间!

  • 相关阅读:
    centos7上安装JupyterHub
    我的测试第一篇博客
    TCP,SYN,FIN扫描
    nmap使用帮助翻译
    MySQL 常用函数
    MySQL 视图
    MySQL 索引
    JAVA 注解
    JAVA 反射
    spring boot MySQL极简封装
  • 原文地址:https://www.cnblogs.com/yours1103/p/3395202.html
Copyright © 2011-2022 走看看