zoukankan      html  css  js  c++  java
  • UVA11549 计算机谜题(Floyd判圈算法)

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<cmath>
     5 #include<algorithm>
     6 #include<set>
     7 #include<sstream>
     8 using namespace std;
     9 /*int next1(int n,int k)
    10 {
    11     stringstream ss;
    12     ss<<(long long)k*k;
    13     string s=ss.str();
    14     if(s.length()>n)s=s.substr(0,n);//结果太长,只取前n位
    15     int ans;
    16     stringstream ss2(s);
    17     ss2>>ans;
    18     return ans;
    19 }*/
    20 int buf[100];
    21 int next2(int n,int k)
    22 {
    23     if(!k) return 0;
    24     long long k2=(long long)k*k;
    25     int L=0;
    26     while(k2>0){
    27         buf[L++]=k2%10;k2/=10;
    28     }
    29     if(n>L)n=L;
    30     int ans=0;
    31     for(int i=0;i<n;i++)
    32     ans=ans*10+buf[--L];//把前min{n,L}位重新组合
    33     return ans;
    34 }
    35 /*int main()
    36 {
    37     int T;
    38     cin>>T;
    39     while(T--)
    40     {
    41         int n,k;
    42         cin>>n>>k;
    43         set<int>s;
    44         int ans=k;
    45         while(!s.count(k))
    46         {
    47             s.insert(k);
    48             if(k>ans)ans=k;
    49             k=next1(n,k);
    50         }
    51         cout<<ans<<endl;
    52     }
    53     return 0;
    54 }
    55 */
    56 int main()
    57 {
    58     int T;
    59     cin>>T;
    60     while(T--)
    61     {
    62         int n,k;
    63         cin>>n>>k;
    64         int ans=k;
    65         int k1=k;int k2=k;
    66         do{
    67         k1=next2(n,k1);
    68         k2=next2(n,k2);if(k2>ans)ans=k2;
    69         k2=next2(n,k2);if(k2>ans)ans=k2;
    70         }while(k1!=k2);
    71         cout<<ans<<endl;
    72     }
    73     return 0;
    74 }

    假设有两个小孩在一个“可以无限向前跑”的环形跑道上赛跑,同时出发,但其中一个小孩的速度是另一个小孩的速度的2倍,那么跑的快的小孩将追上跑的慢的小孩,

    注释掉的代码的时间要更长next1要4秒多,next2要1秒。

  • 相关阅读:
    批量修改文件的名字
    字节码指令以及操作数栈的分析
    字节码文件的分析
    类加载器详解
    类的加载-连接-初始化
    电商订单ElasticSearch同步解决方案--使用logstash
    springboot整合Mangodb实现crud,高级查询,分页,排序,简单聚合
    mongodb安装教程(亲测有效)
    Azure : 通过 SendGrid 发送邮件
    用java实现删除目录
  • 原文地址:https://www.cnblogs.com/WHLdbk/p/6034492.html
Copyright © 2011-2022 走看看