📅  最后修改于: 2023-12-03 15:07:34.120000             🧑  作者: Mango
该问题是ISRO CS 2013考试中的一道编程题,涉及数学计算和逻辑运算。
给定两个整数 X
和 Y
,请编写一个程序,用以下公式计算它们的加权和:
S = 0
while X > 0 or Y > 0:
S = S + (X % 10 + Y % 10) % 10 * 2 ** i
i++
X = X // 10
Y = Y // 10
其中 %
表示取模运算符,//
表示整除运算符。
输入包含两个整数 X
和 Y
。
输出一个整数,表示加权和 S
。
输入:
12 56
输出:
84
该题需要将两个整数 X
和 Y
按照位数拆分,然后根据位数进行加权计算。以样例中的输入为例,可以将 X
和 Y
分别拆分成:
X: 1 2
Y: 5 6
然后根据加权公式进行计算:
S = (2 % 10 * 2 ** 0) + (8 % 10 * 2 ** 1) + (1 % 10 * 2 ** 2) = 84
需要注意的是,在计算过程中需要使用 while
循环依次计算各位的加权和,同时需要定义一个变量 i
用来表示当前位数对应的加权值。
以下是一种可能的 Python 代码实现:
X, Y = map(int, input().split())
S, i = 0, 0
while X > 0 or Y > 0:
S += (X % 10 + Y % 10) % 10 * 2 ** i
i += 1
X //= 10
Y //= 10
print(S)
该代码首先读入输入的两个整数 X
和 Y
,然后定义变量 S
和 i
初始值均为 0
,使用 while
循环依次计算各位的加权和,并将结果输出。