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

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

Posted by dreamcoder at 2010-12-06 20:54:13 on Problem 3983
In Reply To:虽然没过,早上写的代码太烂了,现在用string类来做,实在爽啊。。简洁多了。。。 Posted by:D10001280 at 2010-12-04 17:07:18
> 
> #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