I - A Simple Math Problem(解題報(bào)告)
? ? ? ?第一次寫,一道比較簡(jiǎn)單的題,乍一看覺得非常簡(jiǎn)單,但暴力枚舉后就會(huì)TLE,所以就需要另辟蹊徑,仔細(xì)觀察題,我們可以通過數(shù)學(xué)方法來簡(jiǎn)化。輸入的兩個(gè)數(shù)n,m,然后設(shè)結(jié)果a,b。設(shè)a,b的最大公約數(shù)為g,然后設(shè)g*k1 = a,g*k2=b,g*k1+g*k2=n,因?yàn)閙=(a*b)/g,所以m=g*k1*k2.。由此可得出g也是m和n的最大公約數(shù),所以g為已知量,所以可以列出方程g*k1^2-n*k1+m=0,所以轉(zhuǎn)化成根的存在問題,但是要注意的是要考慮根要為整數(shù)。
接下來是代碼:
#include#includeint gcd(int a,int b){int temp;if(aans2)
{
ans = ans1;
ans1 = ans2;
ans2 = ans;
}
if(ans2<=0)
{
flag = 1;
}
if(flag||ans1%2==1||ans2%2==1)
{
printf("No Solution\n");
}
else
{
printf("%d %d\n",ans1/2,ans2/2);
}
}
return 0;
}