题目描述
来源
OpenJudge网站 —— 百练习题集-第4139号习题
要求
总时间限制: 3000ms 单个测试点时间限制: 1000ms 内存限制: 65536kB
描述
给定正整数a,b,c。求不定方程 ax+by=c 关于未知数x和y的所有非负整数解组数。
输入
一行,包含三个正整数a,b,c,两个整数之间用单个空格隔开。每个数均不大于1000。
输出
一个整数,即不定方程的非负整数解组数。
样例输入
2 3 18
样例输出
4
解题思路
- 穷举可能的x, y,判断x, y的组合是否构成解,如果是则把解组数增1。
参考答案
a, b, c = [int(s) for s in input().split()]
count = 0
for x in range(c//a + 1): #穷举可能的x
for y in range((c - a*x)//b + 1): #穷举可能的y
if a*x + b*y == c:
count += 1 #x, y的组合满足条件,解组数增1
print(count)
测试用例
-
题目描述给出的测试用例覆盖了一般情形。
-
c=0的情形。
样例输入
2 3 0
样例输出
1 -
容易推算出解组数的测试用例。
样例输入
1 1 6
样例输出
7
小结
- 本题所采用的算法叫穷举法,是一种典型的算法。