进制转换
时间限制: 1S类别: 字符串->简单
问题描述 :
输入一个十进制数,将其化成N进制数输出(2≤N≤16)。 输出结果时,大于等于10的数字用字母代替,A代表10,B代表11以此类推。
输入说明 :
你的程序需要从标准输入设备(通常为键盘)中读入多组测试数据。每组输入数据由一行组成,每行有2个数,分别代表十进制数m(0≤ m < 2^31)和进制N(2≤N≤16),它们以空格分隔,在行首和行尾没有多余的空格。
输出说明 :
对每组测试数据,你的程序需要向标准输出设备(通常为启动该程序的终端)依次输出一组对应的答案:输出10进制数转换后的N进制数。所有数据前后没有多余的空格,两组数据之间也没有多余的空行。
输入范例:100 10
100 15
输出范例:
100
6A
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string str;
void turn(int n,int N)
{ str.clear();int num;char ch;
if(n==0)str='0';
else while(n)
{
num=n%N;
if(num>9)
ch=num+'A'-10;
else ch=num+'0';
str.push_back(ch);
n/=N;
}
reverse(str.begin(),str.end());
}
/*void show(string str)
{
for(auto it=str.begin();it!=str.end();it++ )
cout<<*it;
}*/
int main()
{
int n,N;
while(cin>>n>>N)
{
turn(n,N);
cout<<str<<endl;
}
return 0;
}
进制转换基础知识
回文平方数
时间限制: 1S类别: 一维数组->较难
问题描述 :
回文数是指从左向右念和从右向左念都一样的数。如12321就是一个典型的回文数。 给定一个进制B(2=<B<=20进制),输出所有的大于等于1小于等于300且该数的平方用B进制表示时是回文数的数(该数本身不要求是回文数)。
输入说明 :
共一行,一个单独的整数B(B用十进制表示,比如18)。
输出说明 :
每行两个数字,第二个数是第一个数的平方,且第二个数是回文数。
注意:输出时,这两个数都应该以B进制表示。
在输出时,数字10到20分别以A到K代替。
输入范例
20
输出范例
1 1
2 4
3 9
4 G
11 121
22 484
25 515
33 9I9
DD 9669
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string str;//****//
void turn(int n,int N)
{ str.clear();int num;char ch;
if(n==0)str='0';
else while(n)
{
num=n%N;
if(num>9)
ch=num+'A'-10;
else ch=num+'0';
str.push_back(ch);
n/=N;
}
reverse(str.begin(),str.end());
}
/*void show(string str)
{
for(auto it=str.begin();it!=str.end();it++ )
cout<<*it;
}*/
int flag(string str)
{
string str1=str;
reverse(str1.begin(),str1.end());//注意reverse不是成员函数并且对其中的string进行操作并不返回值正好和toupper相反//
if(str1==str)return 1;
else return 0;
}
int main()
{
int N;cin>>N;int flag1=0;
for(int i=1;i<=300;i++)
{
turn(i*i,N);
if(flag(str))
{ if(flag1)
cout<<endl;flag1=1;
turn(i,N);
cout<<str<<" ";
turn(i*i,N);
cout<<str;
}
}
return 0;
}