题解
1.把输出直接看成一个向量整体存在map里
2.如果两个向量 \(a>b\) 代表a的字典序比b大
code
#include<bits/stdc++.h>
using namespace std;
int vis[100005]={0};
int dlx[100005]={0};
int xf[100005]={0};
int fa[100005]={0};
int ss(int now)
{
if(now==1) return 1;
if(vis[now]) return 0;
vis[now]=1;
int sum=0;
int cp=now;
while(cp)
{
sum+=(cp%10)*(cp%10);
cp/=10;
}
fa[sum]=1;
if(ss(sum))
{
xf[now]=1;
dlx[now]=dlx[sum]+1;
}
else xf[now]=0;
return xf[now];
}
int sushu(int now)
{
for(int i=2;i*i<=now;i++) if(now%i==0) return 1;
return 2;
}
int main()
{
int l,r;
cin>>l>>r;
for(int i=l;i<=r;i++)
{
ss(i);
memset(vis,0,sizeof vis);
}
int flag=0;
for(int i=l;i<=r;i++)
{
if(xf[i]&&!fa[i])
{
flag=1;
cout<<i<<" "<<dlx[i]*sushu(i)<<endl;
}
}
if(!flag) puts("SAD");
return 0;
}
标签:int,sum,xf,100005,vis,039,清点,L2,now
From: https://www.cnblogs.com/pure4knowledge/p/18145962