做题列表
其他进制转换成十进制:
十进制转换成其他进制:
1022 D进制的A+B (20分)
算出A+B和后,是十进制,然后用“除基取余法”把十进制转换成其他进制:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int A,B,D,ans[31],i=0;
cin>>A>>B>>D;
int sum = A+B;
do{
ans[i++]=sum%D;
sum/=D;
}while(sum!=0);
for(int j=i-1;j>=0;j--)
{
cout<<ans[j];
}
cout<<endl;
return 0;
}
1037 在霍格沃茨找零钱 (20分)
根据题意可得,Galleon等于17*29个Knut,Sickle等于17个Knut,即这些都转换成用Knut表示。
最后得出的零钱再转换成Galleon,Sickle,Knut表示即可。
#include<bits/stdc++.h>
using namespace std;
const int Galleon = 17*29;
const int Sickle = 29;
int main()
{
int a1,b1,c1;
int a2,b2,c2;
scanf("%d.%d.%d %d.%d.%d",&a1,&b1,&c1,&a2,&b2,&c2);
int price,money,change;
price=a1*Galleon+b1*Sickle+c1;
money=a2*Galleon+b2*Sickle+c2;
change=money-price;
if(change<0)
{
cout<<"-";
change=-change;
}
printf("%d.%d.%d\n",change/Galleon,change%Galleon/Sickle,change%Sickle);
return 0;
}
1019 General Palindromic Number (20分)
题目描述
题意:输入一个十进制的数,然后第二个数是进制数,判断十进制转换成b进制后的数,是否是回文,是的话输出Yes,不是输出No。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int ans[50];
int n,b;
cin>>n>>b;
int i=0;
do{
ans[i++]=n%b;
n/=b;
}while(n!=0);
int count=0;
for(int j=(i-1)/2;j>=0;j--) //判断是否是回文,定义一个计数器count,记录相等的对数,与得到的回文串的长度建立关系,若想等,则是回文。
{
if(ans[j]!=ans[i-j-1])
{
cout<<"No"<<endl;
break;
}
else count++;
}
if(count==(i/2)+1) cout<<"Yes"<<endl;
for(int j=i-1;j>0;j--) //最后一个字符后边不能有空格,可以输出前几个,最后一个单独输出。
{
cout<<ans[j]<<" ";
}
cout<<ans[0];
return 0;
}
1027 Colors in Mars (20分)
题目描述
题意:对于十进制的[0,168]之间的数,转换成十三进制的数,十三进制的数:0~9,A-C,用数组表示,168/13=12,在十三进制的表示范围内,则可以直接用输入的数/13表示第一位数,用%13表示第二位数。
#include <bits/stdc++.h>
using namespace std;
char d[13]={'0','1','2','3','4','5','6','7',
'8','9','A','B','C'};
int main()
{
int a,b,c;
cin>>a>>b>>c;
cout<<"#";
cout<<d[a/13]<<d[a%13];
cout<<d[b/13]<<d[b%13];
cout<<d[c/13]<<d[c%13];
return 0;
}
1058 A+B in Hogwarts (20分)
#include <bits/stdc++.h>
using namespace std;
const int Galleon=17*29;
const int Sickle=29;
int main()
{
int x1,x2,x3;
int y1,y2,y3;
scanf("%d.%d.%d",&x1,&x2,&x3);
scanf("%d.%d.%d",&y1,&y2,&y3);
long long a1,a2;
a1=(long long)x1*Galleon+x2*Sickle+x3;
a2=(long long)y1*Galleon+y2*Sickle+y3;
long long sum=0;
sum=a1+a2;
printf("%d.%d.%d\n",sum/Galleon,(sum%Galleon)/Sickle,sum%Sickle);
return 0;
}