本文共 1374 字,大约阅读时间需要 4 分钟。
找循环节,肯定在40项以内,不会证明。
#include #include #include #include using namespace std;long long a[105];map m;int main(){ long long t; cin>>t; for(long long o=1;o<=t;o++) { m.clear(); long long n;//n的范围很大,用long long cin>>a[1]>>a[2]>>n; m[a[1]]=1; m[a[2]]=1; long long x,y; long long r,l; for(long long i=3;i<=105;i++) { x=0,y=0; long long xx=a[i-1]; long long yy=a[i-2]; while(xx>=10) { x+=xx%10; xx=xx/10; } x+=xx; while(yy>=10) { y+=yy%10; yy=yy/10; } y+=yy; a[i]=x+y; if(!m[a[i]]) m[a[i]]=1; else if(m[a[i]]&&m[a[i-1]]) { r=i-2; bool f=0; for(long long j=2;j<=i-1;j++) { if(a[i]==a[j]&&a[i-1]==a[j-1]) { l=j-1; f=1; break; } } if(f) break; } } cout<<"Case #"< <<": "; if(n<=r) cout< <
转载于:https://www.cnblogs.com/caiyishuai/p/8594749.html