您的位置:首页 > 编程语言 > C语言/C++

codeforces gym 100645A

2016-07-03 15:35 405 查看
将以前写过的一些程序搬运一下。

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  codeforces c语言