题目描述

给定正整数a,b,c。求不定方程 ax+by=c 关于未知数x和y的所有非负整数解组数。

输入

一行,包含三个正整数a,b,c,两个整数之间用单个空格隔开。每个数均不大于1000。

输出

一个整数,即不定方程的非负整数解组数。

样例输入 
2 3 18
样例输出
4

代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
	// 定义四个整型变量
	// a 和 b 是线性方程 ax + by = c 中的系数
	// c 是线性方程 ax + by = c 中的常数项
	// d 用于记录满足方程 ax + by = c 的非负整数解 (x, y) 的数量,初始化为 0
	int a,b,c,d=0;
	cin>>a>>b>>c;   // 从标准输入读取三个整数,分别赋值给 a、b、c
	for(int i=0;i<=c;i++)    // 外层循环,i 从 0 到 c 遍历,代表方程中的 x 可能的取值
	{
		for(int j=0;j<=c;j++)    // 内层循环,j 从 0 到 c 遍历,代表方程中的 y 可能的取值
		{
			if(a*i+b*j==c)    // 判断当前的 i 和 j 代入方程 ax + by = c 是否成立
			{
				d++;   // 如果成立,说明找到了一组非负整数解,计数器 d 加 1
			}
		}
	}
	cout<<d;    // 输出满足方程的非负整数解的数量
	return 0;    // 主函数正常结束,返回 0
}

 

更多推荐