Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

虽然没过,早上写的代码太烂了,现在用string类来做,实在爽啊。。简洁多了。。。

Posted by D10001280 at 2010-12-04 17:07:18 on Problem 3983
#include <string>
#include <cmath>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;

#define eps   1e-8
#define DOUBLEMAX   100000000000000.0
#define is_zero(x)  \
	(fabs(x) < eps)
#define is_eq(a,b)  \
	(is_zero(fabs(a-b)))

#define module(a,b,ch,stra,strb,fun)  \
	t=Q(a,b,ch,&flg); \
	if(flg)return 0; \
	strt='('+stra+ch+strb+')'; \
	if(fun)return 1

string res;

inline double Q(double a,double b,char c,int *flg)
{
	switch(c){
		case '+':return a+b;
		case '-':return a-b;
		case '*':return a*b;
		case '/':
			if(is_zero(b))*flg=1;
			else return a/b;
	}
	return DOUBLEMAX;
}

int f2(double a,double b,string stra,string strb,char c)
{
	double t;
	int flg=0;
	string strt;
	
	t=Q(a,b,c,&flg);
	if(flg)return 0;
	if(is_eq(t,24.0)){
		res= stra+c+strb;
		return 1;
	}

	return 0;
}
int f3(double a,double b,double c,
	   string stra,string strb,string strc,
	   char c1,char c2)
{
	double t;
	int flg=0;
	string strt;

	//c1
	module(a,b,c1,stra,strb,f2(t,c,strt,strc,c2));

	//c2
	module(b,c,c2,strb,strc,f2(a,t,stra,strt,c1));

	return 0;
}
int f4(double a,double b,double c,double d,
	   string stra,string strb,string strc,
	   string strd,char c1,char c2,char c3)
{
	double t;
	int flg=0;
	string strt;
	//c1
	module(a,b,c1,stra,strb,f3(t,c,d,strt,strc,strd,c2,c3));

	//c2
	module(b,c,c2,strb,strc,f3(a,t,d,stra,strt,strd,c1,c3));

	//c3
	module(c,d,c3,strc,strd,f3(a,b,t,stra,strb,strt,c1,c2));

	return 0;
}

void itoa(int num,char *r)
{
	if(num<10){r[0]= char(num+'0');r[1]=0;}
	else {
		r[0]=char(num/10 +'0');
		r[1]=char(num%10 +'0');
		r[2]=0;
	}
}
int main()
{

	int a,b,c,d;
	char ca[3],cb[3],cc[3],cd[3];
	string sa,sb,sc,sd;
	scanf("%d%d%d%d",&a,&b,&c,&d);
	itoa(a,ca);
	itoa(b,cb);
	itoa(c,cc);
	itoa(d,cd);

	sa=ca;
	sb=cb;
	sc=cc;
	sd=cd;

	char sig[4]={'+','-','*','/'};
	char c1,c2,c3;
	int s1,s2,s3;
	for(s1=0;s1<4;s1++){
		c1=sig[s1];
		for(s2=0;s2<4;s2++){
			c2=sig[s2];
			for(s3=0;s3<4;s3++){
				c3=sig[s3];
				if(f4(a,b,c,d,sa,sb,sc,sd,
					c1,c2,c3)){
					printf("%s",res.c_str());
					return 0;
				}
			}
		}
	}
	
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator