酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

C语言求解不定方程 ax+by=c 非负整数解组数,代码详解!

```c #include <stdio.h> // 扩展欧几里得算法 int extendedEuclidean(int a, int b, int *x, int *y) { if (b == 0) { *x = 1; *y = 0; return a; } int x1, y1; int gcd = extendedEuclidean(b, a % b, &x1, &y1); *x = y1; *y = x1 - (a / b) * y1; return gcd; } int countNonNegativeSolutions(int a, int b, int c) { int x, y; int gcd = extendedEuclidean(a, b, &x, &y); if (c % gcd!= 0) { return 0; } x *= c / gcd; y *= c / gcd; int newA = a / gcd; int newB = b / gcd; int count = 0; for (int k = 0; x + k * newB >= 0; k--) { if ((x + k * newB) >= 0 && (c - a * (x + k * newB)) % b == 0 && (c - a * (x + k * newB)) / b >= 0) { count++; } } for (int k = 1; x - k * newB <= c / a; k++) { if ((x - k * newB) >= 0 && (c - a * (x - k * newB)) % b == 0 && (c - a * (x - k * newB)) / b >= 0) { count++; } } return count; } int main() { int a, b, c; scanf("%d %d %d", &a, &b, &c); int result = countNonNegativeSolutions(a, b, c); printf("%d\n", result); return 0; } ``` ######[AI写代码神器 | 499点数解答 | 2024-11-07 11:21:58]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]