蓝桥杯习题-3(基础训练8-11)

基础练习-8-回文数  

问题描述
  1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。
输出格式
  按从小到大的顺序输出满足条件的四位十进制数。

#include <iostream>

using namespace std;

int main(int argc, char *argv[]) {

	for(int i=1; i<=9; i++)
	{
		for(int j=0; j<=9; j++)
		{
			cout<<i<<j<<j<<i<<endl; 
		}
	}
	
	return 0;
}




基础练习-9-特殊回文数  

问题描述
  123321是一个非常特殊的数,它从左边读和从右边读是一样的。
  输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
  输入一行,包含一个正整数n。
输出格式
  按从小到大的顺序输出满足条件的整数,每个整数占一行。
数据规模和约定
  1<=n<=54。

#include <iostream>
#include <vector>

using namespace std;

int main(int argc, char *argv[]) {

	int n; cin>>n;
	vector<int> answer;
	for(int i=1; i<=9; i++)
	{
		for(int j=0; j<=9; j++)
		{
			for(int k=0; k<=9; k++)
			{
				if(n ==(i*2+j*2+k))
					cout<<i<<j<<k<<j<<i<<endl;
				if(n ==(i*2+j*2+k*2))
				{
					int x = i*100000 +j*10000 +k*1000 +k*100 +j*10 +i;
					answer.push_back(x);
				}		
			}	
		}
	}
	int count = answer.size();
	for (int i = 0; i < count;i++)
	{
		cout<<answer[i]<<endl;
	}
	
	return 0;
}




基础练习-10-十进制转十六进制  

问题描述
  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
  给出一个非负整数,将它表示成十六进制的形式。
输入格式
  输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647
输出格式
  输出这个整数的16进制表示

#include <iostream>
#include <vector>
#include <strstream>

using namespace std;

int main(int argc, char *argv[]) {

	int n; cin>>n;
	if(n==0)
		cout<<0;
	vector<string> answer;
	while(n!=0)
	{
		int t = n%16;
		n= n/16;
		if(t>=10)
		{
			string s;
			if(t == 10)
			{	s="A";	 answer.push_back(s);	} 
			if(t == 11)
			{	s="B";	 answer.push_back(s);	} 
			if(t == 12)
			{	s="C";	 answer.push_back(s);	} 
			if(t == 13)
			{	s="D";	 answer.push_back(s);	} 
			if(t == 14)
			{	s="E";	 answer.push_back(s);	} 
			if(t == 15)
			{	s="F";	 answer.push_back(s);	} 
		}
		else
		{
			string s;
			strstream ss;
			ss<<t;
			ss>>s;
			answer.push_back(s);
		}
	}
	
	int count = answer.size();
	for(int i=count-1; i>=0; i--)
		cout<<answer[i];
	
	return 0;
}



 基础练习-11-十六进制转十进制 

 

问题描述
  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
#include <iostream>
#include <math.h>
#include <strstream>

using namespace std;

int main(int argc, char *argv[]) {

	string n; cin>>n;
	int len = n.length();
	long long answer=0;
	for(int i=0;i<len;i++)
	{
		string temp1 = n.substr(i,1);
		long long temp2;
		if(temp1 == "A")	temp1 = "10";
		if(temp1 == "B")	temp1 = "11";
		if(temp1 == "C")	temp1 = "12";
		if(temp1 == "D")	temp1 = "13";
		if(temp1 == "E")	temp1 = "14";
		if(temp1 == "F")	temp1 = "15";
		strstream ss;
		ss<<temp1;
		ss>>temp2;
		answer+=temp2*pow(16,len-i-1);
	}
	cout<<answer;
	
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值