POJ 1312 Numerically Speaking

http://poj.org/problem?id=1312



看清楚题目可以看到是一个进制转换的问题

没写出来

看了别人的代码


//============================================================================
// Name        : hello.cpp
// Author      : key
// Version     : 8
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================



#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;

#define NUM_INF 0x7FFFFFFF

int Judge(int n,char tmp[30])
{
	
	for(int i=n;i<30;i++)
		
		if(tmp[i])
			
			return 1;
		
		return 0;
		
}

void DecToBin(char a[30])
{
	int i,j,tmp=0,k=0,len=strlen(a);
	char res[30],b[30],cop[30];
	memset(res,0,sizeof(res));
	strcpy(cop,a);
	while(strcmp(cop,"0"))
	{
		i=tmp=j=0;
		while(i=0;i--)
		printf("%c",res[i]);
	for(i=k+1;i<23;i++)
		printf(" ");
}

void BigNumMultiSmall(int a1[],int &n)
{
	int i;
	a1[0]=a1[0]*26;
	for(i=1;i9)
	{
		a1[i]=a1[i-1]/10;
		a1[i-1]=a1[i-1]%10;
		i++;
	}
	n=i;
}
void BinToDec(char a[30])
{
	int j,k,t,m=0,len=strlen(a),i=0;
	int res[30]={0},tmp[30]={0};
	for(i=0;i=0;i--)
	{
		printf("%d",res[i]);
		if((i+1)%3==1&&i)
			printf(",");
	}
}

int main()
{
	int i,t;
	char ch[30];
	while(scanf("%s",ch)!=EOF&&strcmp(ch,"*"))
	{
		if(ch[0]>='a'&&ch[0]<='z')
		{
			printf("%s",ch);
			for(i=strlen(ch)+1;i<23;i++)
				printf(" ");
			BinToDec(ch);
		}
		else
		{
			DecToBin(ch);
			t=strlen(ch);
			for(i=0;i= 'a'&&str[0]<='z')
// 		{
// 			printf_str(str);
// 			printf_num(transformNumber(str,26,10));
// 		}
// 		else
// 		{
// 			printf_str(transformNumber(str,10,26));
// 			printf_num(str);
// 		}
// 	}
// 	return 0;
// };


// int compare(const string& str1, const string& str2);
// string Minus_int(string str1, string str2);
// string Add_int(string str1, string str2);
// string Multiply_int(string str1, string str2);
// string Divide_int(string str1, string str2,int flat);
// 
// string int_to_str(int n)
// {
// 	string str="";
// 	while(n)
// 	{
// 		str+=('0'+n%10);
// 		n/=10;
// 	}
// 	return str;
// }
// void abc_to_num(char* str)
// {
// 	int i;
// 	printf("%s",str);
// 	for(i=strlen(str);i<22;i++)
// 		printf(" ");
// 	string sum="0";
// 	int temp;
// 	i=0;
// 	while(str[i])
// 	{
// 		sum = Multiply_int(sum ,"26");
// 		temp = (str[i]-'a'+1);
// 		sum = Add_int(sum , int_to_str(temp));
// 		i++;
// 	}
// 	cout<='0'&&str[0]<='9')
// 			num_to_abc(str);
// 		else
// 			abc_to_num(str);
// 	}
// 	return 0;
// }
// 
// int compare(const string& str1, const string& str2)
// {
// 	if(str1.size() > str2.size())
// 	{
// 		return 1;
// 	}
// 	else if(str1.size() < str2.size())
// 	{
// 		return -1;
// 	}
// 	else
// 	{
// 		//return string
// 		return str1.compare(str2);
// 	}
// }
// 
// string Add_int(string str1, string str2)
// {
// 	int sign = 1;
// 	string str="";
// 	if(str1[0] == '-')
// 	{
// 		if(str2[0]=='-')
// 		{
// 			sign = -1;
// 			str = Add_int(str1.substr(1),str2.substr(1));
// 		}
// 		else
// 		{
// 			str = Minus_int(str2,str1.substr(1));
// 		}
// 	}
// 	else
// 	{
// 		if(str2[0] == '-')
// 		{
// 			str = Minus_int(str1, str2.substr(1));
// 		}
// 		else
// 		{
// 			string::size_type l1, l2;
// 			int i;
// 			l1 = str1.size();
// 			l2 = str2.size();
// 			if(l1 < l2)
// 			{
// 				for(i = 0; i < l2-l1; i++)
// 				{
// 					str1 = "0"+str1;
// 				}
// 			}
// 			else
// 			{
// 				for(i = 0; i < l1-l2; i++)
// 				{
// 					str2 = "0" + str2;
// 				}
// 			}
// 			int int1 = 0;
// 			int int2 = 0;//进位
// 			for(i = str1.size()-1;i>=0; i--)
// 			{
// 				int1 = (int(str1[i]-'0' + str2[i]-'0')+int2)%10;
// 				int2 = (int(str1[i]-'0'+str2[i]-'0')+int2)/10;
// 				str = char(int1+'0')+str;
// 			}
// 			if(int2 != 0)
// 			{
// 				str = char(int2+'0')+str;
// 			}
// 		}
// 	}
// 	if(sign == -1 && str[0] != '0') //处理符号位 
// 	{
// 		str = "-"+str;
// 	}
// 	return str;
// 	
// }
// string Minus_int(string str1, string str2)
// {
// 	int i;
// 	int sign = 1;
// 	string str="";
// 	if(str2[0] == '-')
// 	{
// 		if(str1[0] != '-')
// 		{
// 			str = Add_int(str1,str2.substr(1));
// 		}
// 		else
// 		{
// 			sign = -1;
// 			str = Minus_int(str2.substr(1),str1.substr(1));
// 		}
// 	}
// 	else
// 	{
// 		if(str1[0] == '-')
// 		{
// 			sign = -1;
// 			str = Add_int(str1.substr(1),str2.substr(1));
// 		}
// 		else
// 		{
// 			int ret = compare(str1,str2);
// 			if(ret == 0)
// 				return 0;
// 			else if(ret < 0)
// 			{
// 				string temp = str1;
// 				str1= str2;
// 				str2=temp;
// 				sign = -1;
// 			}
// 			string::size_type tempint;
// 			tempint = str1.size() - str2.size();
// 			for( i = str2.size()-1; i >= 0; i--)
// 			{
// 				if(str1[tempint+i] < str2[i])
// 				{
// 					str1[i+tempint-1] = char(int(str1[i+tempint-1]-'0'-1)+'0');
// 					str = char(str1[i+tempint]-str2[i]+58) + str;
// 				}
// 				else
// 				{
// 					str = char(str1[i+tempint]-str2[i]+48) + str;
// 				}
// 			}
// 			for( i = tempint-1; i >=0; i--)
// 			{
// 				str = str1[i]+str;
// 			}
// 		}
// 	}
// 	
// 	str.erase(0,str.find_first_not_of('0'));
// 	if(str.empty())
// 		str = '0';
// 	else if(sign == -1)
// 	{
// 		str = '-'+str;
// 	}
// 	
// 	return str;
// 	
// }
// string Multiply_int(string str1, string str2)
// {
// 	int sign = 1;
// 	string str="0";
// 	if(str1[0] == '-')
// 	{
// 		sign *= -1;
// 		str1 = str1.substr(1);
// 	}
// 	if(str2[0]=='-')
// 	{
// 		sign *= -1;
// 		str2 = str2.substr(1);
// 	}
// 	int i,j;
// 	string::size_type l1,l2;
// 	l1 = str1.size();
// 	l2 = str2.size();
// 	for( i = l2 -1; i >=0; i--)
// 	{
// 		string tempstr = ""; //用来表示乘法中的那个错位的
// 		int int1 = 0; //乘法结果
// 		int int2 = 0;//进位
// 		int int3 = int(str2[i]-'0');
// 		if(int3!= 0)
// 		{
// 			for(j = 0; j< (int)(l2-i-1); j++)
// 			{
// 				tempstr = "0"+ tempstr;
// 			}
// 			for(j = l1-1; j >=0; j--)
// 			{
// 				int1 = (((int)(str1[j]-'0'))*int3+int2)%10;
// 				int2 = (((int)(str1[j]-'0'))*int3+int2)/10;
// 				tempstr = char(int1+'0') + tempstr;
// 			}
// 			if(int2 != 0)
// 			{
// 				tempstr = char(int2+'0')+tempstr;
// 			}
// 		}
// 		str=Add_int(str,tempstr);
// 	}
// 	if(str[0] =='0')
// 		str = "0";
// 	else if(sign == -1)
// 	{
// 		str = "-"+str;
// 	}
// 	return str;
// 	
// }
// string Divide_int(string str1, string str2,int flat)
// {
// 	string quotient,residue;
// 	quotient="";
// 	residue="";
// 	int sign1 = 1;
// 	int sign2 = 1;
// 	if(str2 == "0")
// 	{
// 		cout << "除数为0" <='0';ch--) //试商,这个还蛮关键的
// 			{
// 				string str="";
// 				str = str + ch;
// 				if(compare(Multiply_int(str2,str), tempstr) <=0)
// 				{
// 					quotient = quotient + ch;
// 					tempstr = Minus_int(tempstr,Multiply_int(str2, str));
// 					break;
// 				}
// 			}
// 		}
// 		residue = tempstr;
// 	}
// 	quotient.erase(0, quotient.find_first_not_of('0'));
// 	if(quotient.empty())
// 		quotient = "0";
// 	else if(sign1 == -1)
// 	{
// 		quotient ="-"+quotient;
// 	}
// 	if(sign2 == -1 && residue[0] != '0')
// 	{
// 		residue = '-' + residue;
// 	}
// 	if(flat==1)		 //shang
// 	return quotient;
// 	else			 //yushu
// 	return residue;
// }


你可能感兴趣的:(ACM,模拟)