2301: 不定方程解的个数

题目描述

输出不定方程解的个数。在数学中,不定方程是数论中的一个重要课题,在各种比赛中也常常出现. 对于不定方程,有时我们往往只求非负整数解,现有方程ax+by+c=0,其中x、y为未知量且不超过10000,当给定a、b、c的值以后,可求出n组x、y的非负整数解,n>=0,,其中a,b,c均为[-10000,10000].

输入描述

一行,三个空格隔开的整数,为a、b、c的值。 

输出描述

一个整数,为合法的解的组数.

输入样例 复制
3 2 -2
输出样例 复制
1
#include 
using namespace std;

int main() {
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    if(a == 0 && b == 0) {
        if(c != 0) {
            printf("0\n");
        } 
        return 0;
    }

    if(a == 0) {
        if(c % b == 0 && -c / b >= 0) {
            printf("1\n");
        } else {
            printf("0\n");
        }
        return 0;
    }

    if(b == 0) {
        if(c % a == 0 && -c / a >= 0) {
            printf("1\n");
        } else {
            printf("0\n");
        }
        return 0;
    }
    int count = 0;
    for(int x = 0; x <= 10000; x++) {
        if((a * x + c) % b == 0) {
            int y = (-a * x - c) / b;
            if(y >= 0) {
                count++;
            }
        }
    }
    printf("%d", count);
    return 0;
}

输出不定方程解的个数。在数学中,不定方程是数论中的一个重要课题,在各种比赛中也常常出现. 对于不定方程,有时我们往往只求非负整数解,现有方程ax+by+c=0,其中x、y为未知量且不超过10000,当给定a、b、c的值以后,可求出n组x、y的非负整数解,n>=0,,其中a,b,c均为[-10000,10000].一行,三个空格隔开的整数,为a、b、c的值。一个整数,为合法的解的组数.

你可能感兴趣的:(算法)