信息学奥赛c++语言:不定方程求解
·
题目描述
给定正整数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
}
更多推荐


所有评论(0)