第四届cccc团体程序设计天梯赛

  蒟蒻的第一次参加天梯赛,也能也是最后一次参加天梯赛了,下半年打完icpc就要退役了,准备考研复习了

  本人的第一次天梯赛,也是本校的第一次天梯赛,由于大家都缺少经验,痛失银奖,只拿了个铜奖回来(刚开始银牌区第二的,比赛结束变成铜牌第二了,哭唧唧),下次打应该会少踩写坑。

  这届次的L1-8是“罪魁祸首”,我们几个队友头铁一直去莽这道题(我也花了不少时间),直到主办人员过来说进阶标准降到600分,我才写L2的,然后L2-4用stack写又出bug了,改了半天改不出来,浪费了

几十分钟,最后受不了了,直接用数组模拟一遍过(QAQ)。然后写完L2-3发现只剩20分钟了,L2-1看了下有点像前段时间广东工业大学校赛的1003,然而我并没看懂依附性是怎么算的(事后花了点时间看,不

难),只拿了个129分(一个5分题少了1分)

  因为第一次参赛,几个队友不知道榜单怎么看,不会跟榜(主要是赛前被主办方吓唬住了,不敢乱点,怕被取消成绩),L2没写一道题,最后只差不到20分进银牌区,很可惜,只要随便有个人再写一道L2

就有银了。

  最后贴一下补了的L2-1的代码吧。

#include<bits/stdc++.h>
const int N=1e4+7;
using namespace std;

int vc[10005];
bool mp[10005][10005],sushu[10005],state[10005];
set<int> st1;
set<int> ::iterator it;
void init()
{
    sushu[1]=1;
    for(int i=2;i<1005;i++)
    {
        if(sushu[i]==0)
        {
            for(int j=2;i*j<1005;j++)
            {
                sushu[i*j]=1;
            }
        }
    }
    state[1]=1;
    mp[1][1]=1;
    for(int i=2;i<=1000;i++)
    {
        int j=i;
        st1.clear();
        while(st1.find(j)==st1.end())
        {
            st1.insert(j);
            int num=0;
            while(j)
            {
                int p=j%10;
                j/=10;
                p=p*p;
                num+=p;
            }
            j=num;
            if(j==1)
                break;
        }
        if(j==1)
        {
            state[i]=1;//i是幸福数
            vc[i]=st1.size();
            for(it=st1.begin();it!=st1.end();it++)
            {
                mp[i][*it]=1;//哪些数依赖i
            }
        }
    }
}
int main()
{
    init();
    int i,j,a,b,val;
    scanf("%d%d",&a,&b);
    for(i=a;i<=b;i++)
    {
        if(state[i]==0)//不是幸福数
            continue;
        for(j=a;j<=b;j++)
        {
            if(j==i)
                continue;
            if(mp[j][i]==1)
                break;
        }
        if(j==b+1)
        {
            val=vc[i];
            if(sushu[i]==0)
                val*=2;
            printf("%d %d\n",i,val);
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/Ray-/p/10639979.html