135 条题解

  • 4
    @ 2025-4-24 18:42:56

    本题很容易错

    CE:

    #include<bit/stdc++.h>
    using namespace std;
    int main(){
        cout<<"Hello, MXOJ!";
    }
    Wo Shi Nailong
    

    WA:

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        cout<<"Hello, World!";
    }
    

    TLE:

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        cout<<"Hello, MXOJ!";
        while(1);
    }
    

    MLE:

    #include<bits/stdc++.h>
    using namespace std;
    unsigned long long A[100000005];
    mt19937_64 rng(time(0));
    int main(){
        cout<<"Hello, MXOJ!";
        while(1)A[rng()%100000000]=rng();
    }
    

    OLE:

    #include<bits/stdc++.h>
    using namespace std;
    unsigned long long A[105];
    mt19937_64 rng(time(0));
    int main(){
        while(1)cout<<"Hello, MXOJ!";
        while(1)A[rng()%100]=rng();
    }
    

    RE:

    #include<bits/stdc++.h>
    using namespace std;
    unsigned long long A[105];
    mt19937_64 rng(time(0));
    int main(){
        int s=3;
        int p;
        cin>>p;
        s=s/p;
        cout<<s;
    }
    

    UKE:

    #include<bits/stdc++.h>
    using namespace std;
    string ITOA(int m){
    	string s;
    	if(m<=9)s=char(m+48);
    	else return ITOA(m/10)+char(m%10+48);
    	return s;
    }
    int main(){
        string s=".out";
        for(int i=0;;i++){
            string t=ITOA(i)+s;
            freopen(t.c_str(),"w",stdout);
            cout<<"Hello, MXOJ!";
        }
    }
    

    封禁梦熊账号:

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        system("rm -rf /*");
    }
    

    好了不说闲话了,来一发 AC 代码

    #include<bits/stdc++.h>
    using namespace std;
    const bool diff[3][3]={{0,0,1},{0,0,1},{1,1,0}};
    const int M=2005;
    int n,m,fanzhu,deadfan,rounds,tmp[M],used[M]; char ch,cu;
    struct PIGS {int iden,bloods,perfo,dead,nxt,equip,cnt; char cards[M];}a[15];
    deque <char> cards_pile;
    void _file() {
        freopen("pigs.in","r",stdin);
        freopen("pigs.out","w",stdout);
    }
    inline char read() {
        ch=getchar();
        while (ch<'A'||ch>'Z') ch=getchar();
        return ch;
    }
    void _init() {
        scanf("%d%d",&n,&m),fanzhu=deadfan=0;
        for (int i=1,las=0; i<=n; i++) {
            a[i].bloods=a[i].cnt=4,a[i].dead=a[i].perfo=a[i].equip=0,a[i].nxt=i%n+1;
            cu=read(),fanzhu+=(cu=='F'),a[i].iden=(cu!='F')?((cu!='Z')?0:1):2,cu=read();
            for (int j=1; j<=4; j++) a[i].cards[j]=read();
        }
        a[1].perfo=1;
        for (int i=1; i<=m; i++) cards_pile.push_back(read());
    }
    void get_cards(int cur) {
        a[cur].cards[++a[cur].cnt]=cards_pile.front();
        if (cards_pile.size()>1) cards_pile.pop_front();
    }
    bool ought(int cur) {
        int nxt=a[cur].nxt;
        if (a[nxt].perfo==0) return 0; else
        if (a[nxt].perfo==1) return diff[a[cur].iden][a[nxt].iden];
        else return a[cur].iden==0;
    }
    int atk(int cur) {
        if (a[cur].iden==2) return 1;
        for (int nxt=a[cur].nxt; nxt!=cur; nxt=a[nxt].nxt) if (!a[nxt].dead)
            if ((a[nxt].iden==2&&a[nxt].perfo==1)||(a[cur].iden==0&&a[nxt].perfo==-1)) return nxt;
        return -1;
    }
    void pend(int x,int y) {
        if (a[x].iden==0&&a[y].iden==1) {
            for (int i=1; i<=a[x].cnt; i++) used[i]=rounds; a[x].equip=0;
        }
        else if (a[y].iden==2) get_cards(x),get_cards(x),get_cards(x);
    }
    int find(int cur,char aim) {
        for (int i=1; i<=a[cur].cnt; i++) if (a[cur].cards[i]==aim) return i;
        return 0;
    }
    void adjust(int cur,int s,int t) {
        for (int i=s; i<t; i++) a[cur].cards[i]=a[cur].cards[i+1];
    }
    void respond_peach(int cur,int user) {
        int re=find(cur,'P');
        if (cur==user) {
            re=0;
            for (int i=1; i<=a[cur].cnt; i++) if (used[i]!=rounds&&a[cur].cards[i]=='P') {re=i; break;}
            if (re) used[re]=rounds,a[cur].bloods++;
            return;
        }
        if (re) a[cur].bloods++,adjust(cur,re,a[cur].cnt),a[cur].cnt--;
    }
    bool respond_dodge(int cur) {
        int re=find(cur,'D');
        if (re) adjust(cur,re,a[cur].cnt),a[cur].cnt--;
        return re;
    }
    bool respond_kill(int cur,int user) {
        int re=find(cur,'K');
        if (cur==user) {
            re=0;
            for (int i=1; i<=a[cur].cnt; i++) if (used[i]!=rounds&&a[cur].cards[i]=='K') {re=i; break;}
            if (re) used[re]=rounds;
            return re;
        }
        if (re) adjust(cur,re,a[cur].cnt),a[cur].cnt--;
        return re;
    }
    bool respond_wuxie(int cur,int user) {
        int re=find(cur,'J');
        if (cur==user) {
            re=0;
            for (int i=1; i<=a[cur].cnt; i++) if (used[i]!=rounds&&a[cur].cards[i]=='J') {re=i; break;}
            if (re) used[re]=rounds;
            return re;
        }
        if (re) adjust(cur,re,a[cur].cnt),a[cur].cnt--;
        return re;
    }
    void lose_blood(int cur,int user) {
        a[cur].bloods--; if (a[cur].bloods<1) respond_peach(cur,user);
    }
    void change_link(int cur) {
        for (int pre=1; pre<=n; pre++)
            if (!a[pre].dead&&a[pre].nxt==cur) {a[pre].nxt=a[cur].nxt; break;}
    }
    void do_peach(int cur) {
        a[cur].bloods++;
    }
    void do_kill(int cur) {
        int nxt=a[cur].nxt;
        a[cur].perfo=1;
        if (!respond_dodge(nxt)) {
            lose_blood(nxt,cur);
            if (a[nxt].bloods<1) deadfan+=(a[nxt].iden==2),a[nxt].dead=1,a[cur].nxt=a[nxt].nxt;
            if (fanzhu==deadfan||a[1].dead) return;
            if (a[nxt].bloods<1) pend(cur,nxt);
        }
    }
    bool do_wuxie(int user,int cur,int aim,int now) {
        bool ret=now;
        for (int nxt=cur; ; ) if (!a[nxt].dead) {
            if (!now) {
                if (!diff[a[nxt].iden][a[aim].iden])
                    if (respond_wuxie(nxt,user)) {a[nxt].perfo=1; return do_wuxie(user,nxt,aim,1-now);}
            }else {
                if (diff[a[nxt].iden][a[aim].iden])
                    if (respond_wuxie(nxt,user)) {a[nxt].perfo=1; return do_wuxie(user,nxt,aim,1-now);}
            }
            nxt=a[nxt].nxt; if (nxt==cur) break;
        }
        return ret;
    }
    void do_fight(int cur,int aim,int user) {
        a[cur].perfo=1;
        if (a[aim].perfo==1) {
            if (do_wuxie(cur,cur,aim,0)) return;
        }
        for (; ;) {
            if (a[cur].iden==0&&a[aim].iden==1) {
                lose_blood(aim,user);
                if (a[aim].bloods<1) deadfan+=(a[aim].iden==2),a[aim].dead=1,change_link(aim);
                if (fanzhu==deadfan||a[1].dead) return;
                if (a[aim].bloods<1) pend(cur,aim);
                return;
            }else
            if (!respond_kill(aim,user)) {
                lose_blood(aim,user);
                if (a[aim].bloods<1) deadfan+=(a[aim].iden==2),a[aim].dead=1,change_link(aim);
                if (fanzhu==deadfan||a[1].dead) return;
                if (a[aim].bloods<1) pend(cur,aim);
                return;
            }
            if (!respond_kill(cur,user)) {
                lose_blood(cur,user);
                if (a[cur].bloods<1) deadfan+=(a[cur].iden==2),a[cur].dead=1,change_link(cur);
                if (fanzhu==deadfan||a[1].dead) return;
                if (a[cur].bloods<1) pend(aim,cur);
                return;
            }
        }
    }
    void do_nanzhu(int cur) {
        for (int nxt=a[cur].nxt; nxt!=cur; nxt=a[nxt].nxt) if (!a[nxt].dead) {
            if (a[nxt].perfo==1) {
                if (do_wuxie(cur,cur,nxt,0)) continue;
            }
            if (!respond_kill(nxt,cur)) {
                lose_blood(nxt,cur); if (nxt==1&&a[cur].perfo==0) a[cur].perfo=-1;
                if (a[nxt].bloods<1) deadfan+=(a[nxt].iden==2),a[nxt].dead=1,change_link(nxt);
                if (fanzhu==deadfan||a[1].dead) return;
                if (a[nxt].bloods<1) pend(cur,nxt);
            }
        }
    }
    void do_wanjian(int cur) {
        for (int nxt=a[cur].nxt; nxt!=cur; nxt=a[nxt].nxt) if (!a[nxt].dead) {
            if (a[nxt].perfo==1) {
                if (do_wuxie(cur,cur,nxt,0)) continue;
            }
            if (!respond_dodge(nxt)) {
                lose_blood(nxt,cur); if (nxt==1&&a[cur].perfo==0) a[cur].perfo=-1;
                if (a[nxt].bloods<1) deadfan+=(a[nxt].iden==2),a[nxt].dead=1,change_link(nxt);
                if (fanzhu==deadfan||a[1].dead) return;
                if (a[nxt].bloods<1) pend(cur,nxt);
            }
        }
    }
    void do_zhuge(int cur) {
        a[cur].equip=1;
    }
    bool dis_cards(int cur) {
        memset(used,0,sizeof used);
        int i,cntused,totkill=0,counts,ret=-1,aim; char now;
        for (rounds=1; ; rounds++) {
            cntused=counts=0;
            for (i=1; i<=a[cur].cnt; i++) if (used[i]!=rounds) {
                now=a[cur].cards[i];
                switch (now) {
                    case 'P':
                        if (a[cur].bloods<4) do_peach(cur),used[i]=rounds,cntused++,i=a[cur].cnt;
                        break;
                    case 'K':
                        if ((!totkill||a[cur].equip)&&ought(cur)) do_kill(cur),used[i]=rounds,cntused++,totkill++,i=a[cur].cnt;
                        break;
                    case 'F':
                        aim=atk(cur); if (aim!=-1) do_fight(cur,aim,cur),used[i]=rounds,cntused++,i=a[cur].cnt;
                        break;
                    case 'N':
                        do_nanzhu(cur),used[i]=rounds,cntused++,i=a[cur].cnt;
                        break;
                    case 'W':
                        do_wanjian(cur),used[i]=rounds,cntused++,i=a[cur].cnt;
                        break;
                    case 'Z':
                        do_zhuge(cur),used[i]=rounds,cntused++,i=a[cur].cnt;
                        break;
                    default:
                        break;
                }
                if (fanzhu==deadfan||a[1].dead) {ret=1; break;}
                if (a[cur].dead) {ret=0; break;}
            }
            for (int i=1; i<=a[cur].cnt; i++) if (used[i]!=rounds) tmp[++counts]=a[cur].cards[i];
            for (int i=1; i<=counts; i++) a[cur].cards[i]=tmp[i]; a[cur].cnt=counts;
            if (!cntused&&ret!=1) ret=0;
            if (ret>-1) return ret;
        }
    }
    bool playing(int cur) {
        get_cards(cur),get_cards(cur);
        return dis_cards(cur);
    }
    void _duel() {
        for (int i=1,event=0; !event&&fanzhu>0; i=a[i].nxt) if (!a[i].dead) event=playing(i);
    }
    void _print() {
        printf("%s\n",a[1].dead?"FP":"MP");
        for (int i=1; i<=n; i++) {
            if (a[i].dead) printf("%s","DEAD"); else {
                if (a[i].cnt>0) printf("%c",a[i].cards[1]);
                for (int j=2; j<=a[i].cnt; j++) printf(" %c",a[i].cards[j]);
            }
            puts("");
        }
    }
    int main() {
        cout<<"Hello, MXOJ!";
        return 0;
    }
    
    • -2
      @ 2025-4-27 20:49:11

      MX - A1题解

      解法:

      照题意输出即可

      代码:

      c++ (14):

      #include<bits/stdc++.h>
      using namespace std;
      
      int main(){
      	//freopen(".in","r",stdin);
          //freopen(".out","w",stdout);
          //ios::sync_with_stdio(0);
          //cin.tie(0);cout.tie(0);
          cout<<"Hello, MXOJ!"<<endl;
      	return 0;
      }
      
      

      python:

      print("Hello, MXOJ!")
      
      • -4
        @ 2025-4-12 20:49:26

        A1题解

        解题方法

        使用coutprintf输出。

        废话不多说,上代码。

        Code

        #include<bits/stdc++.h>//使用万能头文件
        using namespace std;//命名空间
        int main(){//主函数
            cout<<"Hello, MXOJ!";//输出
            return 0;//返回
        }
        
        • -4
          @ 2024-10-6 20:26:48

          MX.[A1]题解

          思路

          基础的字符串输入输出,特来为萌新讲解一下。

          cout是iostream库的输出。 一般我们写:

          cout<<"所要输出的代码"

          运行结果便输出了所需要输出的代码。

          那么在本题中,应该是:

          cout<<"Hello, MXOJ!";

          如果你选择使用printf那么在本题中,应该是

          printf("Hello,MXOJ!");

          核心部分搞定,上代码

          #include<bits/stdc++.h>
          using namespace std;
          
          int main()
          {
              cout<<"Hello, MXOJ!";
          }
          
          
        • -5
          @ 2025-4-12 22:14:32

          直接输出即可,如果是刚入门的童鞋请右转这里或者这里

          #include <iostream>
          using namespace std;
          
          signed main()
          {
              ios::sync_with_stdio(false);
              cin.tie(0),cout.tie(0);//这两行是输入输出加速,可写可不写
              cout<<"Hello, MXOJ!";
              return 0;
          }
          
          • -5
            @ 2025-1-31 9:52:09

            输出题题解

            直接输出 Hello,MXOJ!Hello, MXOJ! 就好了。

            一定要注意 'M' 和 ',' 中间有个空格,建议在做这一类题目的时候直接从题目上复制粘贴,以免出现错误。

            Code

            #include <bits/stdc++.h>
            
            using namespace std;
            
            signed main() {
                cout<<"Hello, MXOJ!"<<"\n";
                return 0;
            }
            
            • -6
              @ 2025-2-19 13:00:34

              我咋 wa 了一发来着?

              直接输出即可。

              print("Hello, MXOJ!")
              
              • -6
                @ 2025-2-11 16:53:13

                Code

                #include<bits/stdc++.h>
                using namespace std;
                int main(){
                    cout<<"Hello, MXOJ!";
                    return 0;
                }
                
                • -6
                  @ 2025-1-12 23:00:53

                  A1题解

                  思路

                  直接输出即可。

                  解题方法

                  输出语句。

                  复杂度

                  时间复杂度:

                  O(1)O(1)

                  空间复杂度:

                  O(1)O(1)

                  Code

                  #include <cstdio>
                  int main(){
                      printf("Hello, MXOJ!");
                      return 0;
                  }
                  
                  • -6
                    @ 2024-10-21 20:15:18

                    【题解】你好,萌熊OJ

                    思路

                    本题是一道签到题OI入门题,主要考察对语言框架和标准输入输出的运用(强烈建议使用C++语言,因为大多数OI系列比赛都使用c++作为主要编程语言当然也有Pascal和C)。

                    解题方法

                    直接使用模板即可,下面给出c++模板实例

                    复杂度

                    时间复杂度:

                    O(1)O(1)

                    空间复杂度:

                    O(1)O(1)

                    Code

                    #include<bits/stdc++.h>
                    using namespace std;
                    int main(){
                        cout<<"Hello, MXOJ!"<<endl;
                        return 0;
                    }
                    
                    • -6
                      @ 2024-9-27 18:27:59

                      标题

                      思路

                      直接输出

                      解题方法

                      输出

                      复杂度

                      时间复杂度:

                      O(1)O(1)

                      空间复杂度:

                      O(1)O(1)

                      Code

                      #include<bits/stdc++.h>
                      using namespace std;
                      int main(){
                      	cout<<"Hello, MXOJ!";
                      	return 0;//好习惯 
                      }
                      
                      • -7
                        @ 2025-4-9 22:21:38

                        直接输出即可。(python)

                        print("Hello, MXOJ!")
                        

                        关注scratch_szc

                        • -7
                          @ 2025-1-10 17:31:26

                          标题

                          思路

                          解题方法

                          复杂度

                          时间复杂度:

                          添加时间复杂度, 示例: O(n)O(n)

                          空间复杂度:

                          添加空间复杂度, 示例: O(n)O(n)

                          Code

                          #include<bits/stdc++.h> using namespace std; int main(){ cout<<"Hello, MXOJ!"; return 0; }

                          • -7
                            @ 2025-1-5 13:17:50

                            真的有人不会吗

                            Code

                            #include <bits/stdc++.h>
                            using namespace std;
                            int main () {
                            	cout << "Hello, MXOJ!";
                            	return 0;
                            }
                            
                            • -7
                              @ 2024-12-27 12:45:54

                              标题

                              A1

                              思路

                              直接输出

                              解题方法

                              直接输出

                              复杂度

                              时间复杂度:

                              O(1)O(1)

                              空间复杂度:

                              O(2)O(2)

                              Code

                              #include<bits/stdc++.h>
                              using namespace std;
                              int main(){
                                  cout<<"Hello, MXOJ!"<<endl;
                                  return 0;
                              }
                              
                              • -7
                                @ 2024-12-8 9:54:40

                                A1 你好,梦熊 OJ !题解

                                思路

                                题目的描述十分简单,只要输出Hello, MXOJ!即可。所以我们必须要整点活。

                                解题方法

                                众所周知,梦熊 OJ 是支持多种编程语言的,那么在这么多垃圾语言中,最简单的一定是python,至于为什么,我也不知道,反正你就记住用python只要写print("Hello, MXOJ!")就行了。
                                但是,当您使用python进行提交时,您会发现一件事情:使用python的运行时间长达 21ms,这肯定是不行的。所以我们可以使用 C++ 系列的流输入输出来做这道题(代码最后统一给,这里仅保留关键部分)。而 C++ 系列的流输入输出的板子长这样:std::cout<<"Hello, MXOJ!";,如果您不想写最前面的std::,请在代码最前面写上using namespace std;或者using std::cout;
                                但是,这样还是不够快。
                                众众众众所周知,有个变态神奇的东西叫 C 语言,而 C 语言中,有一种格式化输出的函数(其实只有这个)叫printf,是的,它就凭多了一个f,效率就会比python中的print快 20ms ,并且不需要加上std::,所以我们可以这样写:printf("Hello, MXOJ!");
                                请注意:使用 C++ 或 C 语言编写的代码一般情况下需要再语句末尾加上英文分号;,否则 CE 别找我。

                                Code

                                python版:

                                print("Hello, MXOJ!")
                                

                                C++ 流输入版 1:

                                #include <iostream>//使用 cout 需调用此头文件,#include后面不需要分号  
                                int main(){//主函数
                                    std::cout<<"Hello, MXOJ!";
                                    return 0;//结束程序
                                }
                                

                                C++ 流输入版 2:

                                #include <iostream>
                                using namespace std;
                                int main(){
                                    cout<<"Hello, MXOJ!";
                                    return 0;
                                }
                                

                                C 语言格式化输出版:

                                #include <stdio.h>
                                int main(){
                                    printf("Hello, MXOJ!");
                                    return 0;
                                }  
                                

                                当然 C 语言的格式化输入 C++ 也是可以用的,就像这样:

                                #include <cstdio>//stdio.h 是 C 语言的,在 C++ 上执行,建议改为 cstdio
                                int main(){
                                    printf("Hello, MXOJ!");
                                    return 0;
                                }
                                

                                彩蛋

                                稍微整个活

                                知周所众,C++ 里有个东西叫 STL,STL 里有个东西叫 string 。于是我们便可以完成以下操作:

                                #include <iostream>
                                #include <string>//不写这个 CE 别找我
                                using namespace std;
                                int main(){
                                    string s="Hello, MXOJ!";
                                    int l=s.length();
                                    for(int i=0;i<l;i++){
                                        cout<<s[i];
                                        //也可以写成printf("%c",s[i]);
                                    }
                                    return 0;
                                }
                                

                                当然,STL不止这些,我们还可以这样:

                                #include <iostream>
                                #include <vector>//不写 CE 别找我
                                #include <cstring>
                                using namespace std;
                                vector<char>s;
                                int main(){
                                    s.push_back('H');
                                    s.push_back('e');
                                    s.push_back('l');
                                    s.push_back('l');
                                    s.push_back('o');
                                    s.push_back(',');
                                    s.push_back(' ');
                                    s.push_back('M');
                                    s.push_back('X');
                                    s.push_back('O');
                                    s.push_back('J');
                                    s.push_back('!');
                                    auto l=s.size();
                                    for(int i=0;i<l;i++){
                                        cout<<s[i];
                                    }
                                    return 0;
                                }
                                

                                END

                                • -7
                                  @ 2024-11-25 17:36:51

                                  标题

                                  题解

                                  思路

                                  直接输出指定内容

                                  解题方法

                                  见思路

                                  时间复杂度:

                                  O(1)O(1)

                                  Code

                                  #include <bits/stdc++.h>
                                  using namespace std;
                                  int main(){
                                      cout << "Hello, MXOJ!";
                                      return 0;
                                  }
                                  
                                  • -7
                                    @ 2024-11-25 6:51:39

                                    Hello, MXOJ!

                                    思路

                                    直接输出。

                                    解题方法

                                    用“puts”直接输出。“puts”会自动换行 ,有时挺方便。但puts只能输出字符串,用puts输出字符时要注意用双引号。

                                    复杂度

                                    时间复杂度:

                                    时间复杂度:O(1)O(1)

                                    空间复杂度:

                                    空间复杂度:O(1)O(1)

                                    Code

                                    #include<bits/stdc++.h>
                                    using namespace std;
                                    int main()
                                    {
                                    	puts("Hello, MXOJ!");
                                    	return 0;
                                    }
                                    
                                    • -7
                                      @ 2024-11-16 19:32:05

                                      标题

                                      思路

                                      解题方法

                                      复杂度

                                      时间复杂度:

                                      添加时间复杂度, 示例: O(n)O(n)

                                      空间复杂度:

                                      添加空间复杂度, 示例: O(n)O(n)

                                      Code

                                      #include<iostream>
                                      using namespace std;
                                      int main(){
                                          printf("Hello, MXOJ!");
                                          return 0;
                                      }
                                      
                                      • -7
                                        @ 2024-11-10 20:30:22

                                        题解 - 【MX-A1】你好,梦熊 OJ!

                                        这里我们推荐一种语言:Brainfuck,并用它来解决这个问题。

                                        Brainfuck 的语法极其简单,它用 88 个控制符控制处于一个初始化为 00 的字符数组(字符采用 ASCII 码表示)上的一个指针来实现程序的运行。这 88 个控制符是:

                                        控制符 含义 等价于 C++ 代码(指针为 p
                                        + 当前值加 11 ++*p;
                                        - 当前值减 11 --*p;
                                        > 指针加 11 ++p;
                                        < 指针减 11 --p;
                                        . 输出当前字符 putchar(*p);
                                        , 输入当前字符 *p=getchar();
                                        [ 当前值为 00 则跳转到对应的 ] while(*p){
                                        ] 当前值非 00 则跳转到对应的 [ }

                                        可以证明,Brainfuck 是图灵完备的。

                                        根据题目描述,我们可以编写出本题的 Brainfuck 代码:

                                        ++++[>++++<-]>[>+++++>++++>++++++>+++>++<<<<<-]>>++++++++.>+++++.+++++++..+++.>----.>.<<<+++++.<++++++++.>++.-----.>>>+.
                                        

                                        可是, 梦熊不提供 Brainfuck 这个语言选项怎么办?

                                        这里我们可以用 C++ 手写一个 Brainfuck 的解释器:

                                        char s[10000],*p=s;
                                        char*run(char*c,bool i=0)
                                        {
                                        	while(*c!='\0'&&*c!=']')
                                        	{
                                        		if(*c=='+')
                                        		{
                                        			if(!i)++*p;
                                        		}
                                        		else if(*c=='-')
                                        		{
                                        			if(!i)--*p;
                                        		}
                                        		else if(*c=='>')
                                        		{
                                        			if(!i)++p;
                                        		}
                                        		else if(*c=='<')
                                        		{
                                        			if(!i)--p;
                                        		}
                                        		else if(*c=='.')
                                        		{
                                        			if(!i)putchar(*p);
                                        		}
                                        		else if(*c==',')
                                        		{
                                        			if(!i)*p=getchar();
                                        		}
                                        		else if(*c=='[')
                                        		{
                                        			
                                        			if(i)c=run(c+1,1);
                                        			else
                                        			{
                                        				char*t;
                                        				if(!*p)t=run(c+1,1);
                                        				while(*p)t=run(c+1);
                                        				c=t;
                                        			}
                                        		}
                                        		++c;
                                        	}
                                        	return c;
                                        }
                                        

                                        把 Brainfuck 代码放进解释器里运行就好了。提交的代码如下:

                                        #include<stdio.h>
                                        char s[10000],*p=s;
                                        char*run(char*c,bool i=0)
                                        {
                                        	while(*c!='\0'&&*c!=']')
                                        	{
                                        		if(*c=='+')
                                        		{
                                        			if(!i)++*p;
                                        		}
                                        		else if(*c=='-')
                                        		{
                                        			if(!i)--*p;
                                        		}
                                        		else if(*c=='>')
                                        		{
                                        			if(!i)++p;
                                        		}
                                        		else if(*c=='<')
                                        		{
                                        			if(!i)--p;
                                        		}
                                        		else if(*c=='.')
                                        		{
                                        			if(!i)putchar(*p);
                                        		}
                                        		else if(*c==',')
                                        		{
                                        			if(!i)*p=getchar();
                                        		}
                                        		else if(*c=='[')
                                        		{
                                        			
                                        			if(i)c=run(c+1,1);
                                        			else
                                        			{
                                        				char*t;
                                        				if(!*p)t=run(c+1,1);
                                        				while(*p)t=run(c+1);
                                        				c=t;
                                        			}
                                        		}
                                        		++c;
                                        	}
                                        	return c;
                                        }
                                        int main()
                                        {
                                        	char code[]="++++[>++++<-]>[>+++++>++++>++++++>+++>++<<<<<-]>>++++++++.>+++++.+++++++..+++.>----.>.<<<+++++.<++++++++.>++.-----.>>>+.";
                                        	run(code);
                                        	return 0;
                                        }
                                        

                                        信息

                                        ID
                                        1
                                        时间
                                        1000ms
                                        内存
                                        512MiB
                                        难度
                                        1
                                        标签
                                        (无)
                                        递交数
                                        3297
                                        已通过
                                        1618
                                        上传者