3219:练36.2 不定方程求解
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 955 通过数: 687
【题目描述】
给定正整数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(){
long long a,b,c,cnt=0;//cnt表示有几种答案
cin>>a>>b>>c;//读入
for(int x=0;x<=1000;x++){//x循环一下(从0到1000),因为每个数最大是1000,所以这样一直试x,总能试出来
for(int y=0;y<=1000;y++){//因为每个数最大为 1000,所以逐个尝试y,总能找到答案
if(a*x+b*y==c){//如果符合题目要求,就是找到答案了
cnt++;//答案总数+1
}
}
}
//注意!!!题目说是非负整数解,说明答案可以是正整数或0,要从0开始枚举!!!
cout<<cnt;
return 0;
}