PAT乙 1048 数字加密 (GO)

解题思路:

  1. 题目意思比较简单,从后往前,根据当前个数的奇偶数来分别计算
  2. 这时就会有个问题,2个字符串长度问题,这里有个坑,只有等到2个字符串都循环到最后一位才停止,中间有一个字符串长度不够了,用0来补上
package main

import "fmt"

func  main() {
	var A, B string
	var result []int
	_, _ = fmt.Scanf("%s %s", &A, &B)
	lengthA := len(A)
	lengthB := len(B)
	if lengthA > lengthB {
		result = make([]int, lengthA+1)
	} else {
		result = make([]int, lengthB+1)
	}

	i:=0
	for i=1; lengthA>0 || lengthB>0; i++ {
		lengthB -= 1
		lengthA -= 1
		a := 0
		b := 0
		if lengthA >= 0 {
			a = int(A[lengthA] - '0')
		}
		if lengthB >= 0 {
			b = int(B[lengthB] - '0')
		}
		if i % 2 == 0 {
			result[i] = b - a
			if result[i] < 0 {
				result[i] += 10
			}
		} else {
			result[i] = (b + a) % 13
		}
	}
	for j:=i-1; j>0; j-- {
		if result[j] == 10 {
			fmt.Printf("%c", 'J')
		} else if result[j] == 11 {
			fmt.Printf("%c", 'Q')
		} else if result[j] == 12 {
			fmt.Printf("%c", 'K')
		} else 
			fmt.Printf("%d", result[j])
		}
	}
	fmt.Println()
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值