Problem E 不定方程求解

2021-10-12 12:22:38 字數 1153 閱讀 5803

description 不定方程ax + by =c,對於給定的係數a和b、常數項c,求出在區間p~q範圍內方程的乙個整數解x、y,滿足x和y不全為0且x取值最大。題目保證a、b、c、x、y、p、q都是-10000~10000範圍之內的整數。

input

輸入分為兩部分,第一部分是三個整數a、b、c且a、b不為0,第二部分包含多組輸入,每組輸入為一行包含兩個整數p和q,且p <= q,至eof結束。

output

輸出每行與輸入第二部分對應,每行為方程的解:兩個整數x、y,滿足條件p <=x,y <=q,x和y不全為0且x取值最大,若無滿足條件的解則輸出「no」。

錯誤**1:

#include

#include

intmain()

if(x<=q&&y<=q&&a*x+b*y==c&&

(x!=

0||y!=0)

)printf

("%d %d\n"

,x,y)

;else

printf

("no\n");

}return0;

}

錯誤**2:

#include

#include

intmain()

}if(flag==0)

break;}

if(flag)

printf

("no\n");

}return0;

}

犯的錯誤:

解題思路整體沒問題,但是有一致命傷,題目要求x取值最大,這樣寫的話,到底是讓x取最大還是讓y取最小?這兩者等價嗎?因為沒過,所以顯然不等價,也一定存在反例,不去費腦筋想了,但一定記住這種讓誰最大的,如果要用雙重迴圈來處理就要把取最大的放到外層迴圈,然後用–而不是++。

這兩個**稍加修改就可以得到正確答案。

#include

#include

intmain()

}if(flag==0)

break;}

if(flag)

printf

("no\n");

}return0;

}

不定方程求解

不定方程ax by c,對於給定的係數a和b 常數項c,求出在區間p q範圍內方程的乙個整數解x y,滿足x和y不全為0且x取值最大。題目保證a b c x y p q都是 10000 10000範圍之內的整數。輸入分為兩部分,第一部分是三個整數a b c且a b不為0,第二部分包含多組輸入,每組輸...

4139 不定方程求解

總時間限制 1000ms 記憶體限制 65536kb 描述給定正整數a,b,c。求不定方程 ax by c 關於未知數x和y的所有非負整數解組數。輸入一行,包含三個正整數a,b,c,兩個整數之間用單個空格隔開。每個數均不大於1000。輸出乙個整數,即不定方程的非負整數解組數。樣例輸入 2 3 18 ...

不定方程求解 列舉

小蒜給定正整數 a,b,c。求不定方程 ax by c 關於未知數 x 和 y 的所有非負整數解組數。輸入格式 一行,包含三個正整數 a,b,c,兩個整數之間用單個空格隔開。每個數均不大於 1000。輸出格式 乙個整數,即不定方程的非負整數解組數。輸出時每行末尾的多餘空格,不影響答案正確性 樣例輸入...