信息学奥赛一本通C++语言——1101:不定方程求解

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

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

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

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

#include <iostream>
using namespace std;
int main()
{
    int a,b,c;
    int count=0;
    cin >> a >> b >> c;
    for(int x=0; x<=c/a; x++){ //由原式可得x=c/a-b*y/a,因x,y非负,所0<=x<=c/a,遍历x
        int y=(c-a*x)/b;//求y的值
        if(a*x+b*y==c){//带入原式验证
        	count++;//计数器
        }
    }
    cout << count << endl;
    return 0;
}
发布了107 篇原创文章 · 获赞 32 · 访问量 3239

猜你喜欢

转载自blog.csdn.net/weixin_46272402/article/details/104672239