【模板】数位拆解 (数值转换、特殊乘法题解)

这是一类简单的问题。

1.对于不超过int的数,可以直接读入整数,通过不断求模再除以10的形式获得每一个数位,将它们存在数组里。

2.对于超过int的数,考虑以字符串形式读入,然后依次处理每一位,将它们存在数组里面。需要注意的是,以字符串读入的时候,字符串的高位存储的是数的低位。

数值转换

题目描述

求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。  

不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1,...,9,A,B,...,F)。  

输入

输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2 =< a,b <= 16。  

数据可能存在包含前导零的情况。  

输出 

    可能有多组测试数据,对于每组数据,输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,...,9,A,B,...,F)。  

样例输入

15 Aab3 7  

样例输出 

210306 
//数制转换
//15 Aab3 7
//210306 
#include<iostream>
using namespace std;
int main(void)
{
	int m;int n;//原进制和待转换进制
	while(cin>>m>>n)
	{
		string str;
		cin>>str;
		long long int num=0;
		for(int i=0;i<str.length();i++)
		{
			int temp;
			if(str[i]>='0'&&str[i]<='9') temp=str[i]-'0';
			else if(str[i]>='A'&&str[i]<='Z') temp=str[i]-'A'+10;
			else if(str[i]>='a'&&str[i]<='z') temp=str[i]-'a'+10; 
			num=num*m+temp;
		}//转换成10进制
		char ans[100];
		int count=0;
		do{
			int bit = num % n ;
			if(bit>=0&&bit<=9) ans[count]='0'+bit;
			else if(bit>=10&&bit<=36) ans[count]='A'+bit-10;
			num = num /n ;
			count++;
		}while(num);//转换为n进制 
		for(int i=0;i<count;i++) cout<<ans[count-i-1];
		cout<<endl;
	 } 
	 return 0;
}

 

特殊乘法

题目描述

写个算法,对2个小于1000000000的输入,求结果。

特殊乘法举例:123 * 45 = 1*4 +1*5 +2*4 +2*5 +3*4+3*5

输入

 两个小于1000000000的数

输出

 输入可能有多组数据,对于每一组数据,输出Input中的两个数按照题目要求的方法进行运算后得到的结果。

样例输入

123 45

样例输出

54
//特殊乘法 
#include<iostream>
using namespace std;
int main(void)
{
	int a,b;
	while(cin>>a>>b)
	{
		int buf1[20],buf2[20];
		int size1=0;int size2=0;
		while(a!=0)
		{
			buf1[size1++]=a%10;
			a/=10;
		}
		while(b!=0)
		{
			buf2[size2++]=b%10;
			b/=10;
		}
		int ans = 0;
		for(int i=0;i<size1;i++){
			for(int j=0;j<size2;j++){
				ans+=buf1[i]*buf2[j];
			}
		}
		cout<<ans<<endl;
	}
	return 0;
 } 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值