将模运算符移到方程的另一边

问题描述 投票:0回答:3

我有一个数学问题,它是我的编程问题的一部分

我有这样的声明

a = b%30;

如何用

b
来计算
a

我想了一下,但没能弄清楚。

math modulus
3个回答
8
投票

根据定义,

b == 30*n + a

对于某个整数

n

请注意,有多个

b
值可以为您提供相同的
a
:

>>> b = 31
>>> b % 30
1
>>> b = 61
>>> b % 30
1

3
投票

首先,显然,对于给定的

b
,通常有几种解决方案。

如果

a

是大多数编程语言中的余数运算符,那么

%
的符号至关重要。你知道这是一个编程问题的网站吧?

如果 |a|>=30,则无解

如果 a = 0,则解为 30 的倍数。

如果 0

a

使得 < a < 30, the solutions are all the

b
对于某个正整数
b = 30 * k + a

如果 -30

k

使得 < a < 0, the solutions are all the

b
对于某个正整数
b = - (30 * k - a)
    


0
投票

k

由于 
b == 30*n + a

施加的约束,

b%30
必须在 0 到 29 之间
但是 b 是无界的。每个 

a

 有(无限)多个 
b
因此,您必须有一些其他方程来应用于 

a

b
才能得到明确的答案。我将称之为
n
要以编程方式求解 

f(b)

,您还需要

b
的有效范围,或者至少需要一个起始值和移动方向:
n

或者如果您想收集 n 范围内的多个 b

# an example function, this would be unique to whatever your problem is function f(b) return 100 <= b <= 1000 n = 0 # or whatever your start is while not f(b) # could also be f(n) depending on your needs n += 1 # or whatever your direction is b == 30*n + a

© www.soinside.com 2019 - 2024. All rights reserved.