description 不定方程ax + by =c,對於給定的係數a和b、常數項c,求出在區間p~q範圍內方程的乙個整數解x、y,滿足x和y不全為0且x取值最大。題目保證a、b、c、x、y、p、q都是-10000~10000範圍之內的整數。錯誤**1:input
輸入分為兩部分,第一部分是三個整數a、b、c且a、b不為0,第二部分包含多組輸入,每組輸入為一行包含兩個整數p和q,且p <= q,至eof結束。
output
輸出每行與輸入第二部分對應,每行為方程的解:兩個整數x、y,滿足條件p <=x,y <=q,x和y不全為0且x取值最大,若無滿足條件的解則輸出「no」。
#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。輸出格式 乙個整數,即不定方程的非負整數解組數。輸出時每行末尾的多餘空格,不影響答案正確性 樣例輸入...