UVa11549计算器谜题[floyd判圈]
生活随笔
收集整理的這篇文章主要介紹了
UVa11549计算器谜题[floyd判圈]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
有個老式計算器,每次只能記住一個數字的前n位。現在輸入一個整數k,然后反復平方,一直做下去,能得到的最大數是多少。例如,n=1,k=6,那么一次顯示:6,3,9,1...
白書上的題
set,hash都占空間也不快
裸floyd判圈
?
洛谷U4984
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using namespace std; typedef long long ll; const int N=11; inline ll read(){char c=getchar();ll x=0,f=1;while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return x; } ll n,k; int buf[N]; int nxt(int n,ll k){if(!k) return 0;ll tmp=(ll)k*k;int L=0;while(tmp>0) {buf[L++]=tmp%10;tmp/=10;}if(n>L) n=L;int ans=0;for(int i=0;i<n;i++) ans=ans*10+buf[--L];return ans; } int main(){n=read();k=read();int k1=k,k2=k,ans=k;do{k1=nxt(n,k1);k2=nxt(n,k2); ans=max(ans,k2);k2=nxt(n,k2); ans=max(ans,k2);}while(k1!=k2);cout<<ans; }?
總結
以上是生活随笔為你收集整理的UVa11549计算器谜题[floyd判圈]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python自动化运维之13、异常处理及
- 下一篇: spring整合hibernate的ap