首页 技术 正文
技术 2022年11月8日
0 收藏 942 点赞 1,492 浏览 1868 个字

问题 A: A + B 普拉斯

在计算机中,数字是通过像01像素矩阵来显示的,最终的显示效果如下: 
2018/7/31-zznuoj-问题 A: A + B 普拉斯【二维字符串+暴力模拟+考虑瑕疵的题意-0的特例】 
现在我们用01来构成这些数字

当宝儿姐输入A + B 时(log10(A)<50,log10(B)<50,且A,B均为正整数),你来计算A+B的和C,并按格式在屏幕上打印C。

输入

每组输入包括两个非负整数 A,B(log10(A)<50,log10(B)<50),已EOF结束输入 

输出

按格式在屏幕中打印C,数字之间相隔三列0。 

样例输入

3 8

样例输出

0010000000100
0110000001100
0010000000100
0010000000100
0010000000100
0010000000100
0111000001110

解析思路:

1、首先按照大数相加,把结果求出来!方法:开两个数组暴力模拟!

2、坑点:最后需要把大数的结果按照正常的顺序输出,并且是转化成01字符串!

3、01串事先存在一个二维字符串中,第一维表示0–9以及空格(三列零),第二维表示每个代表的数字(0–9以及空格)的横坐标,得到具体的横坐标后就一层一层地输出即可!把二维字符串想象成蛋糕,输出时就像横着切蛋糕一样,一层一层地去切!

4、题意,有点瑕疵!还有零的情况吧!比如零加零的情况!


题解:

 #include<iostream>
#include<stdio.h>
#include<string.h>
#include<string>
#include<vector>
#include<algorithm>
#define ll long long
using namespace std;
#define N 100 char s1[],s2[];
int sum[];
vector<int>order; char num[][][]={
{"","","","","",
"",""},
{"","","","","",
"",""},
{"","","","","",
"",""},
{"","","","","",
"",""},
{"","","","","",
"",""},
{"","","","","",
"",""},
{"","","","","",
"",""},
{"","","","","",
"",""},
{"","","","","",
"",""},
{"","","","","",
"",""},
{"","","","","",
"",""}}; void paint( )
{
for(int i=;i<=;i++){
for(int j=;j<(int)order.size();j++){
int x=order[j];
printf("%s",num[x][i]);
}
cout<<endl;
}
} int add(char s1[],char s2[]){
int len1=strlen(s1);
int len2=strlen(s2);
int i1=len1-,i2=len2-,i3=;
while(i1>=&&i2>=){
sum[i3]+=s1[i1]-''+s2[i2]-''; //记得这里是加等于!
if(sum[i3]>=){
sum[i3+]+=sum[i3]/;
sum[i3]%=;
}
i3++,i1--,i2--;
}
while(i1>=){
sum[i3]+=s1[i1]-'';
if(sum[i3]>=){
sum[i3+]+=sum[i3]/;
sum[i3]%=;
}
i3++,i1--;
}
while(i2>=){
sum[i3]+=s2[i2]-'';
if(sum[i3]>=){
sum[i3+]+=sum[i3]/;
sum[i3]%=;
}
i3++,i2--;
}
while(sum[i3]>=){ //最终的进位情况!!
sum[i3+]+=sum[i3]/;
sum[i3]%=;
i3++;
} if(sum[i3]>)
return i3+;
else
return i3;
} int main()
{
while(scanf("%s%s",s1,s2)!=EOF){
memset(sum,,sizeof(sum));
int len3=add(s1,s2); //计算大数相加 /* for(int i=0;i<len3;i++){
printf("%d",sum[i]);
}
cout<<"*****"<<endl;
*/
order.clear(); //生成次序
for(int i=len3-;i>=;i--){
order.push_back(sum[i]);
if(i!=)
order.push_back();
}
paint();
} return ;
}

(用到了vector来存贮结果)


相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,488
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,903
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,736
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,487
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,127
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,289