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
- 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<
- return 0;
- }