zoukankan      html  css  js  c++  java
  • Codeforces April Fools Contest 2017

    来自FallDream的博客,未经允许,请勿转载,谢谢。

    -----------------------------------------------------------

    听学长说了这场比赛十分有意思,所以来玩玩。   学长真的强,啥都会,全程听正解然后码代码.....

    A.Numbers Joke

    只有一个样例,输入3输出27  机智的学长瞬间就在OEIS上找到了

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<queue>
    #include<cstring>
    #include<queue>
    #include<algorithm>
    #include<map>
    #define ll long long
    using namespace std;
    inline int read()
    {
        int x=0,f=1;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}
        return x*f;
    }
    
    int s[]={4,22,27,58,85,94,121,166,202,265,274,319,346,355,378,382,391,438,454,483,517,526,535,562,576,588,627,634,636,645,648,654,663,666,690,706,728,729,762,778};
    
    int main()
    {
        int n=read();
        cout<<s[n-1];
        return 0;
    }

    B.Kids' Riddle

    只给输入输出  input 11 output  2   input14output0    input61441output2    input571576output10    input2128506output3

    我也不知道学长是怎么发现的,正解是转换成16进制,然后数圈圈(对,你没看错)

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<queue>
    #include<cstring>
    #include<queue>
    #include<algorithm>
    #include<map>
    #define ll long long
    using namespace std;
    inline int read()
    {
        int x=0,f=1;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}
        return x*f;
    }
    
    int n,ans=0;
    const int s[16]={1,0,0,0,1,0,1,0,2,1,1,2,0,1,0,0};
    int main()
    {
        int x=read();if(!x)return 0*puts("1");
        while(x)
        {
            int a=x%16;
            ans+=s[a];
            x/=16;
        }
        cout<<ans;
        return 0;
    }

    C.INTERCALC

    当场就念了一首诗

    DO YOU EXPECT ME TO FIND THIS OUT?

    WHAT BASE AND/XOR LANGUAGE INCLUDES string?

    DON'T BYTE OF MORE THAN YOU CAN CHEW

    YOU CAN ONLY DISTORT THE LARGEST OF MATHEMATICS SO FAR

    SAYING "ABRACADABRA" WITHOUT A MAGIC AND WON'T DO YOU ANY GOOD

    THE LAST STACK RUPTURES. ALL DIE. OH, THE EMBARRASSMENT!

    I HAVE NO ARRAY AND I MUST SCREAM

    ELEMENTS MAY NOT BE STORED IN WEST HYPERSPACE

    我们发现它是藏头的,其实表达的是

    FIND/FIGURE OR/XOR OF/OFF LARGEST/LAWS AND/WAND LAST/NEXT ARRAY/FILE ELEMENTS/VARIABLES

    find xor of largest and last array elements

    所以找出最大的和最后一个异或一下输出

    #include<cstdio>
    #include<iostream>
    using namespace std;
    int n,x,mx=0;
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)
            cin>>x,mx=max(mx,x);
        cout<<(x^mx);
        return 0;
    }

    D.Touchy-feely Plaindromes

    根据样例和题目判断,最后的结论是根据盲文判断是否对称...

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    using namespace std;
    
    int s[]={8,-1,-1,-1,6,9,4,-1,0,5};
    char st[12313];
    
    int main()
    {
        scanf("%s",st+1);int n=strlen(st+1);
        for(int i=1,j=n;i<j;i++,j--)
            if(st[i]!=st[j]&&s[st[i]-'0']!=st[j]-'0') return 0*puts("No");
        if(n&1){if(st[n/2+1]!='3'&&st[n/2+1]!='7')return 0*puts("No");}
        puts("YES");
        return 0;
    }

    E.Twisted Circuit

    第二列从上到下表示异或、或、与和异或,然后直接算

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<queue>
    #include<cstring>
    #include<queue>
    #include<algorithm>
    #include<map>
    #define ll long long
    using namespace std;
    inline int read()
    {
        int x=0,f=1;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}
        return x*f;
    }
    int s[15];
    
    int main()
    {
        int a=read(),b=read(),c=read(),d=read();
        cout<<(((a^b)&(c|d))^((b&c)|(a^d)));
        return 0;
    }

    F.Crunching Numbers Just for You

    题意:有n个顾客有n个数,你要把给定的n<=10个数排序好。

    但是排序完出现rejected的情况,这时候看最后一句话

    Remember, this is a very important feature, and you have to make sure the customers appreciate it!

    所以顾客不想那么快结束,你要卡卡时间就行了。

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<queue>
    #include<cstring>
    #include<queue>
    #include<algorithm>
    #include<ctime>
    #include<map>
    #define ll long long
    using namespace std;
    inline int read()
    {
        int x=0,f=1;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}
        return x*f;
    }
    
    int a[132123];
    
    
    int main()
    {
        int n=read();time_t start = clock();
        for(int i=1;i<=n;i++)a[i]=read();
        sort(a+1,a+n+1);
        while((double)(clock()-start)/CLOCKS_PER_SEC<1.9);
        for(int i=1;i<=n;i++) cout<<a[i]<<" ";
        return 0;
    }

    F.给定一个表达式求值,输出一份BrainFuck语言写的可以算出答案的代码。

    先算出答案,然后按照BrainFuck语言的一套理论,+表示计数器+1,-表示计数器-1,.(点)表示输出计数器的asc码对应的字符。所以+48之后随便输出呗。

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    using namespace std;
    
    char st[1231000];
    int op[1231231],num[12313],cnt=0;
    
    int calc(int l,int r)
    {
        int x=0;
        for(int i=l;i<=r;i++)
            x=x*10+st[i]-'0';
        return x;
    }
    
    void work(int&th,int x)
    {
        int to=x+48;
        while(th>to)th--,printf("-");
        while(th<to)th++,printf("+");
        printf(".
    ");
    }
    
    int main()
    {
        scanf("%s",st+1);int pre=0;
        for(int i=1;st[i];i++)
        {
            if(st[i]=='+'||st[i]=='-')
            {
                op[++cnt]=(st[i]=='+')?1:2;
                num[cnt]=calc(pre+1,i-1);
                pre=i;
            }
        }
        num[++cnt]=calc(pre+1,strlen(st+1));
        int x=num[1];
        for(int i=1;i<cnt;i++)
        {
            if(op[i]==1)x=x+num[i+1];
            else x=x-num[i+1];
        }
        int th=0;cnt=0;
        if(!x) {work(th,0);return 0;}
        while(x)
        {
            num[++cnt]=x%10;x/=10;
        }
        for(int i=cnt;i;i--)
            work(th,num[i]);
        return 0;
    }
  • 相关阅读:
    localStorage溢出问题
    面试题梳理
    灵活的楼梯导航条代码
    日期初始化
    css 控制横向布局,超出隐藏,滚动
    自定义滚动条样式
    jquery源码之JQ对象
    jqeury源码之变量解析
    jquery源码之通篇概要
    工作站流处理
  • 原文地址:https://www.cnblogs.com/FallDream/p/codeforces_april_fool.html
Copyright © 2011-2022 走看看