数学 方程的解
細節(jié)巨多的數(shù)學題。首先解出一組x最小的正整數(shù)解->ymax,同理求出ymin。就求出了解的個數(shù)。
那么我來說說巨多的細節(jié)。
1,解不出一組解來。
2,a=0||b=0時,若另一個變量最小解小于零,無解;若能解出,就有無數(shù)組。
3,a,b異號。
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 10005
#define ll long long
using namespace std;
int t;
inline void exgcd(ll a,ll b,ll c,ll &x,ll &y,ll &g)
{if(!b){g=a;y=0;x=c/a;}else {exgcd(b,a%b,c,y,x,g);y-=(a/b)*x;}
}
inline void hh()
{ll a,b,c,x,y,sum,g;bool aa=0,bb=0;scanf("%lld%lld%lld",&a,&b,&c);if(!a&&!b){if(!c)printf("ZenMeZheMeDuo\n");else printf("0\n");return;}if(c<0)a=-a,b=-b,c=-c;if(a<0)a=-a,aa=1;if(b<0)b=-b,bb=1;exgcd(a,b,c,x,y,g);if(a*x+b*y!=c){printf("0\n");return;}if(aa)x=-x,a=-a;if(bb)y=-y,b=-b;if(a==0){if(y<=0)printf("0\n");else printf("ZenMeZheMeDuo\n");return;}if(b==0){if(x<=0)printf("0\n");else printf("ZenMeZheMeDuo\n");return;}if((a<0&&b>0)||(a>0&&b<0)){printf("ZenMeZheMeDuo\n");return;}if(a<0)a=-a,b=-b,c=-c;a/=g;b/=g;c/=g;x%=b;while(x<=0)x+=b;y=(c-a*x)/b;ll y1=y%a;while(y1<=0)y1+=a;int ans;if(y1>y)ans=0;else ans=(y-y1)/a+1;if(ans>65535)printf("ZenMeZheMeDuo\n");else printf("%d\n",ans);
}
int main()
{//freopen("fuction.in","r",stdin);//freopen("fuction.out","w",stdout);cin>>t;while(t--)hh();
}
轉(zhuǎn)載于:https://www.cnblogs.com/QTY2001/p/7632681.html
總結(jié)
- 上一篇: 求一个加油个性签名。
- 下一篇: 动手动脑课后实验性的问题