《ACM程序设计》书 训练题中的H题
来源:互联网 发布:凯迪拉克atsl轮毂数据 编辑:程序博客网 时间:2024/06/02 07:16
题意简单的来说,就是每组两个二十进制的数,11到19用a到z表示,结果也是输出二十进制。
思路是先以字符串形式输入到字符串数组里,然后将字符转化为相应的十进制数,存到整型数组里,这里要注意两个字符串如果不一样长,就要从短的那个第一位的位置开始相加。然后把得到的和20进一位,注意数组不要越界,c[0]超过20便在输出时直接输出一个“1”就好。然后再把大于10的转化为相应的字母。代码如下:
#include<iostream>
#include<iomanip>
#include<cmath>
#include<string.h>
using namespace std;
int main()
{string a,b;
long long e,f,g,h,c[100],d,i=0,j,n,max,min;
while (cin>>a>>b)
{h=2;
for (i=0;i<100;i++) c[i]=0;
e=a.length();
f=b.length();
if (e>f) {max=e;h=1;} else {h=0;max=f;}
if (h==1)
for (i=0;i<max;i++)
{if (a[i]>='0'&&a[i]<='9') c[i]+=a[i]-'0';
if (a[i]>='a'&&a[i]<'z') c[i]+=a[i]-'a'+10;
if (i>=abs(e-f))
{if (b[i-(e-f)]>='0'&&b[i-(e-f)]<='9') c[i]+=b[i-(e-f)]-'0';
if (b[i-(e-f)]>='a'&&b[i-(e-f)]<'z') c[i]+=b[i+f-e]-'a'+10;}
}
else
for (i=0;i<max;i++)
{if (b[i]>='0'&&b[i]<='9') c[i]+=b[i]-'0';
if (b[i]>='a'&&b[i]<'z') c[i]+=b[i]-'a'+10;
if (i>=abs(e-f))
{if (a[i-abs(e-f)]>='0'&&a[i-abs(e-f)]<='9') c[i]+=a[i-abs(e-f)]-'0';
if (a[i-abs(e-f)]>='a'&&a[i-abs(e-f)]<'z') c[i]+=a[i-abs(e-f)]-'a'+10;}
}
for (i=max-1;i>0;i--)
if (c[i]>=20) {c[i-1]++;c[i]-=20;}
for (i=0;i<max;i++) {
if (c[0]>=20&&i==0) {
cout<<"1";
c[0]-=20;
}
if (c[i]<10) cout<<c[i];
else cout<<char(c[i]+87);
}cout<<endl;
}
return 0;}
其实只要把思路理清楚了,基本上就能做的差不多。
思路是先以字符串形式输入到字符串数组里,然后将字符转化为相应的十进制数,存到整型数组里,这里要注意两个字符串如果不一样长,就要从短的那个第一位的位置开始相加。然后把得到的和20进一位,注意数组不要越界,c[0]超过20便在输出时直接输出一个“1”就好。然后再把大于10的转化为相应的字母。代码如下:
#include<iostream>
#include<iomanip>
#include<cmath>
#include<string.h>
using namespace std;
int main()
{string a,b;
long long e,f,g,h,c[100],d,i=0,j,n,max,min;
while (cin>>a>>b)
{h=2;
for (i=0;i<100;i++) c[i]=0;
e=a.length();
f=b.length();
if (e>f) {max=e;h=1;} else {h=0;max=f;}
if (h==1)
for (i=0;i<max;i++)
{if (a[i]>='0'&&a[i]<='9') c[i]+=a[i]-'0';
if (a[i]>='a'&&a[i]<'z') c[i]+=a[i]-'a'+10;
if (i>=abs(e-f))
{if (b[i-(e-f)]>='0'&&b[i-(e-f)]<='9') c[i]+=b[i-(e-f)]-'0';
if (b[i-(e-f)]>='a'&&b[i-(e-f)]<'z') c[i]+=b[i+f-e]-'a'+10;}
}
else
for (i=0;i<max;i++)
{if (b[i]>='0'&&b[i]<='9') c[i]+=b[i]-'0';
if (b[i]>='a'&&b[i]<'z') c[i]+=b[i]-'a'+10;
if (i>=abs(e-f))
{if (a[i-abs(e-f)]>='0'&&a[i-abs(e-f)]<='9') c[i]+=a[i-abs(e-f)]-'0';
if (a[i-abs(e-f)]>='a'&&a[i-abs(e-f)]<'z') c[i]+=a[i-abs(e-f)]-'a'+10;}
}
for (i=max-1;i>0;i--)
if (c[i]>=20) {c[i-1]++;c[i]-=20;}
for (i=0;i<max;i++) {
if (c[0]>=20&&i==0) {
cout<<"1";
c[0]-=20;
}
if (c[i]<10) cout<<c[i];
else cout<<char(c[i]+87);
}cout<<endl;
}
return 0;}
其实只要把思路理清楚了,基本上就能做的差不多。
0 0
- 《ACM程序设计》书 训练题中的H题
- 《ACM程序设计》书 训练题中的Q题
- 《ACM程序设计》书 训练题中的J题
- 《ACM程序设计》书 训练题中的K题
- 《ACM程序设计》书 训练题中的S题
- 《ACM程序设计》 H题
- 关于acm程序设计书中题目 #H 第8题
- 第五届“图灵杯”NEUQ-ACM程序设计大赛 H题 深搜
- 《ACM程序设计》书中题目--problem h
- 《ACM程序设计》书中题目H
- 《ACM程序设计》书中题目 H-08 火星ACM
- ACM训练题
- ACM训练题
- 《ACM程序设计》 Z题
- 《ACM程序设计》 B题
- 《ACM程序设计》 P题
- 《ACM程序设计》 Y题
- 《ACM程序设计》 U题
- Git 入门初步
- js 手动设置表单值再提交
- 图像识别(13)——手势识别(1)——用matchShapes识别手形数字
- 2.vue.js实例:双向数据绑定实例
- easyUI中的formatter用法
- 《ACM程序设计》书 训练题中的H题
- 深入剖析Tomcat 第二章 一个简单的Servlet服务器
- 解决intellij idea新建maven项目,加载archetype模型很慢
- 设计模式
- LeetCode之Palindrome Number(回文数)
- MIT的《深度学习》精读(9)
- 对于模态框的使用
- 2017 BAT某家实习生电面---第一次电面的惨痛经历
- webrtc 的回声抵消算法