import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
int b = scan.nextInt();
System.out.println(a + "+" + b + "=" + (a + b));
//方法一:使用%xd格式控制输出的占位符
System.out.println(String.format("%7d",a));
System.out.println("+" + String.format("%6d",b));
System.out.println("-------");
System.out.println(String.format("%7d",(a+b)));
//方法二:一维数组直接干,通过代码设计实现右对齐(ps:刚开始写没看到备注,也基本没用过那个格式所以用数组实现)
int res = a + b;
//a、b的范围各位0-1000,都存放在一个数组中,占8个位置,定义9个确保内存充足
int[] arr = new int[9];
int ct1 = 0; //记录a存放的长度
int ct2 = 0; //记录b存放的长度
int rt = 0; //记录a+b存放的长度
System.out.println(a + "+" + b + "=" + (a + b));
for(int i = 0; i < arr.length; i++){
//循环将a的值从个位、十位、百位等依次存放到从0下标开始的数组arr
//如:a=15,在数组中显示为{5,1}
if(a != 0){
arr[i] = a % 10;
a /= 10;
ct1++;
}
//循环将b的值从个位、十位、百位等从arr数组最后下标开始倒序存储到的数组
//如:b=45,在数组中显示为{4,5}
if(b != 0){
arr[arr.length - i - 1] = b % 10;
b /= 10;
ct2++;
}
}
//根据-------可知占位7位
for(int i = 0; i < 7; i++){
//根据a存放的长度,决定打印空格的长度
//如a=15,则在数值前打印5个空格;a=154,则打印4个空格
if(i < (7 - ct1)){
System.out.print(" ");
}
}
//找到a在数组中存放的各位上的值,按正确顺序输出
for(int i = ct1 - 1; i >= 0; i--){
System.out.print(arr[i]);
}
//以下原理同上
System.out.println();
for(int i = 0; i < 7; i++){
if(i == 0){
System.out.print("+");
} if(i < (7 - ct2 -1)){
System.out.print(" ");
}
}
for(int i = 9 - ct2; i < 9; i++){
System.out.print(arr[i]);
}
System.out.println();
System.out.println("-------");
for(int i = 0; i < 4; i++){
if(res != 0){
arr[i] = res % 10;
res /= 10;
rt++;
}
}
for(int i = 0; i < 7 - rt; i++){
System.out.print(" ");
}
for(int i = rt - 1; i >= 0; i--){
System.out.print(arr[i]);
}
}
}