L2-039 清点代码库

原题链接

题解

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;
}

posted @   纯粹的  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示