信息学奥赛一本通-编程启蒙3219:练36.2 不定方程求解

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<

你可能感兴趣的:(c++)