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

无语了。。。咋弄都是wa

Posted by yadaxia at 2014-04-04 23:10:22 on Problem 1220
代码如下 连测试数据都找到试了一遍没有问题居然还wa。。。这是搞哪样。。。。。。
#include<stdio.h>
#include<string.h>
int mod=0;
int main()
{
	char a[200][1000],b[200][1000];
	int n,i,basea[200],baseb[200];
	char *trans1(char [],int);
	char *trans2(char [],int);
	scanf("%d",&n);
	if(n==0) return 0;
	for(i=0;i<n;i++)
		scanf("%d %d %s",&basea[i],&baseb[i],a[i]);
	for(i=0;i<n;i++)
	{   strcpy(b[i],trans1(a[i],basea[i]));
	    strcpy(b[i],trans2(b[i],baseb[i]));
		printf("%d %s\n%d %s\n\n",basea[i],a[i],baseb[i],b[i]);
	}
	return 0;
}
char *trans1(char *m,int base)
{
	char *add(char *,char *);
	char *multi(char a,int t,int base);
	char result[1000],temp[1000];
	char *r;
	int i,wei=0;
	for(i=0;i<1000;i++)
	    result[i]=0;
	while(m[wei]!=0)
		wei++;  
	for(i=0;i<wei;i++)
	{
		strcpy(temp,multi(m[i],wei-i,base));
	    strcpy(result,add(result,temp));
	} 
	r=result;
	return r;
}

char *add(char a[],char b[])
{   
	int p,q,i=0,result_add,jinwei=0;
	char result[1000],*pt;
	for(i=0;i<1000;i++)
	    result[i]=0;
	for(p=0;a[p];p++); 
	for(q=0;b[q];q++);
	if(p>=q) 
	{
		for(i=0;i<q;i++)
		{
			result_add=(a[i]+b[i]+jinwei-96)%10;
			jinwei=(a[i]+b[i]+jinwei-96)/10;
			result[i]=result_add+48;
		}
		while(i<p)
		{
			result_add=(a[i]-48+jinwei)%10;
			jinwei=(a[i]+jinwei-48)/10;
			result[i]=result_add+48;
			i++;
		}
		if(jinwei) 
			result[p]=jinwei+48;
	}
	else 
	{
		for(i=0;i<p;i++)
		{
			result_add=(a[i]+b[i]+jinwei-96)%10;
			jinwei=(a[i]+b[i]+jinwei-96)/10;
			result[i]=result_add+48;
		}
		while(i<q)
		{
			result_add=(b[i]-48+jinwei)%10;
			jinwei=(b[i]+jinwei-48)/10;
			result[i]=result_add+48;
			i++;
		}
		if(jinwei) 
			result[q]=jinwei+48;
	}
	pt=result;
	return pt;
}  

char *multiply(char a[],int num)
{
	int i,p,result_mul=0;
	char *pt,result[1000];
	for(i=0;i<1000;i++)
	    result[i]=0;
	for(p=0;a[p];p++);  
	for(i=0;i<p;i++)
	{
		result_mul=(a[i]-48)*num+result_mul;
		result[i]=result_mul%10+48;
		result_mul=result_mul/10;
	}
	while(result_mul)
	{
		result[i]=result_mul%10+48;
		result_mul=result_mul/10;
		i++;
	}
	pt=result;
	return pt;
}  

char *devide(char a[],int num)
{
	char *pt,result[1000];
	int i,result_dev=0,p;
	mod=0;
	for(p=0;a[p];p++);  
	for(i=0;i<1000;i++)
		result[i]=0;
	for(i=p-1;i>=0;i--)
	{
		result_dev=(a[i]-48+10*mod)/num;
		if(result[i+1]==0)
			result[i]=result_dev?result_dev+48:0;
		else result[i]=result_dev+48;
		mod=(a[i]-48+10*mod)%num;
	}
	pt=result;
	return pt;
} 

char *multi(char a,int t,int base) 
{
	char result[1000],*pt;
	int i;
	char *multiply(char [],int);
	for(i=0;i<1000;i++)
		result[i]=0;
	if(a>='0'&&a<='9') result[0]=a;
	else if(a>='A'&&a<='Z') 
	{
		result[0]=(a-55)%10+48;
		result[1]=(a-55)/10+48;
	}
	else if(a>='a'&&a<='z')
	{
        result[0]=(a-61)%10+48;
		result[1]=(a-61)/10+48;
	}
	for(i=1;i<t;i++)
		strcpy(result,multiply(result,base));
	pt=result;
	return pt;
}  

char *trans2(char a[],int base)
{
	char *pt,result[1000],rev[1000],swap;
	int i,p,m;
	char *devide(char a[],int num);
	for(i=0;i<1000;i++)
	{result[i]=0;
	 rev[i]=0;}
    strcpy(rev,a);
	for(i=0;rev[0];i++) 
	{
		strcpy(rev,devide(rev,base));
		if(mod>=0&&mod<=9) result[i]=mod+48;
		else if(mod>=10&&mod<=35) result[i]=mod+55;
		else if(mod>=36&&mod<=61) result[i]=mod+61;
	}
	p=i/2;
	m=i;
	for(i=0;i<p;i++)
	{
		swap=result[i];
		result[i]=result[m-i-1];
		result[m-i-1]=swap;
	}
	pt=result;
	return pt;
}

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