codeforces gym 100645A

将以前写过的一些程序搬运一下。
codeforces挂了,只能看到我的代码,不要怪我。


AC代码

//
//  main.cpp
//  A.a.c
//
//  Created by zhangdenny on 16/5/22.
//  Copyright (c) 2016年 Kirito. All rights reserved.
//

#include  <functional>
#include  <algorithm>
#include  <exception>
#include  <stdexcept>
#include  <streambuf>
#include  <iterator>
#include  <string.h>
#include  <stdlib.h>
#include  <typeinfo>
#include  <valarray>
#include  <iostream>
#include  <sstream>
#include  <istream>
#include  <stdio.h>
#include  <climits>
#include  <clocale>
#include  <complex>
#include  <csetjmp>
#include  <csignal>
#include  <cstdarg>
#include  <cstddef>
#include  <ctype.h>
#include  <cassert>
#include  <cstdlib>
#include  <utility>
#include  <cstring>
#include  <numeric>
#include  <ostream>
#include  <cwctype>
#include  <fstream>
#include  <iomanip>
#include  <math.h>
#include  <bitset>
#include  <cctype>
#include  <string>
#include  <vector>
#include  <limits>
#include  <locale>
#include  <memory>
#include  <cerrno>
#include  <iosfwd>
#include  <cfloat>
#include  <cstdio>
#include  <cwchar>
#include  <cmath>
#include  <ctime>
#include  <deque>
#include  <queue>
#include  <stack>
#include  <list>
#include  <ios>
#include  <map>
#include  <set>
#include  <new>
#define fi first
#define se second
#define np next_permutation
#define ll long long
using namespace std;
bool used[5];
set<int> ans;
void dfs(int lft,int a[])
{
    if(lft==1)
    {
        for(int i=0;i<4;i++)
        {
            if(!used[i])
                ans.insert(a[i]);
        }
    }
    else
    {
        for(int i=0;i<4;i++)
            if(!used[i])
            {
                for(int j=0;j<4;j++)
                    if(!used[j] && i!=j)
                    {
                        int old=a[i];
                        used[j]=true;
                        a[i]=old+a[j];
                        dfs(lft-1,a);
                        a[i]=old-a[j];
                        dfs(lft-1,a);
                        a[i]=old*a[j];
                        dfs(lft-1,a);
                        if(a[j]!=0 && old%a[j]==0)
                            a[i]=old/a[j];
                        dfs(lft-1,a);
                        a[i]=old;
                        used[j]=false;
                    }
            }
    }
}
int main()
{
    int testc=0;
    while(true)
    {
        testc++;
        int a,b,c,d;
        cin>>a>>b>>c>>d;
        if(a==0 && b==0 && c==0 && d==0)
            return 0;
        ans.clear();
        int e[5];
        e[0]=a;
        e[1]=b;
        e[2]=c;
        e[3]=d;
        dfs(4,e);
        int sum=0,mx=-1e9,ans1=0,ans2=0;
        for(set<int>::iterator it=ans.begin();it!=ans.end();it++)
        {
            if(mx+1!=*it)
            {
                if(sum>=ans2)
                {
                    ans2=sum;
                    ans1=mx-sum+1;
                }
                sum=1;
                mx=*it;
            }
            else
            {
                mx++;
                sum++;
            }
        }
        if(sum>=ans2)
        {
            ans2=sum;
            ans1=mx-sum+1;
        }
        int ans3=ans1+ans2-1;
        cout<<"Case "<<testc<<": "<<ans1<<" to "<<ans3<<endl;
    }
    return 0;
}
原文地址:https://www.cnblogs.com/NightRaven/p/9333260.html