?? main.cpp
字號:
/***************************************************************************
25. (量水) 用存水為M,N升的兩個罐子,量出A升水。
分析:顯然 0=<A<=M+N
由題意,我們可以假設量出的A升水為M,N升兩個瓶子的水的總和;
對于M和N整體來說,只有4種操作:
1.用M升瓶子裝水
2.用M升瓶子倒水
3.用N升瓶子裝水
4.用N升瓶子倒水
由此得出表達式: M*x + N*y = A (其中x,y為整數)
即求此方程的整數解;
而此方程有整數解的充要條件為: M,N的最大公約數能整除A
如何求出此整數方程的解成了問題的關鍵;
****************************************************************************/
#include <stdio.h>
int get_max_common_divisor(int a, int b)
{
int c;
do
{
c = a%b;
a=b;
b=c;
}while(c);
return a;
}
void main()
{
int x,y;
int M,N,A;
printf("請按順序輸入M,N,A:\n");
scanf("%d%d%d", &M, &N, &A);
if(A % get_max_common_divisor(M,N) !=0 )
{
printf("問題無解!\n");
return;
}
for(x=0; (A-M*x)%N !=0; x++);
y = (A-M*x)/N;
printf("x=%d y=%d\n",x,y);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -