首页 > 代码库 > 未完成
未完成
#include <ctype.h>#include <cstdio>typedef long long LL;void read(LL &x){ x=0;bool f=0; register char ch=getchar(); for(;!isdigit(ch);ch=getchar()) if(ch==‘-‘) f=1; for(; isdigit(ch);ch=getchar()) x=(x<<3)+(x<<1)+ch-‘0‘; x=f?(~x)+1:x;}LL exgcd(LL a,LL b,LL &x,LL &y){ if(b==0) { x=1; y=0; return a; } LL ans=exgcd(b,a%b,x,y); LL tmp=x; x=y; y=tmp-a/b*y; return ans; }LL max(LL a,LL b) {return a>b?a:b;}LL min(LL a,LL b) {return a>b?b:a;}LL a,b,c,ans,Max,Min=0x7fffffff;bool solve(LL a,LL b,LL c){ LL x1,y1; LL gcd=exgcd(a,b,x1,y1); if(c%gcd) return false; LL x0=x1*c/gcd,y0=y1*c/gcd,kx=b/gcd,ky=-a/gcd; int i=0; LL v=c-x0; if(v==y0) { ans++; v==0?Max=max(Max,2):Max=max(Max,1); v==0?Min=min(Min,2):Min=min(Min,1); } for(i=1;x0+kx*i<=c;i++) { LL v=c-(x0+kx*i); if((v-y0)%i==0&&(v-y0)/i==ky) { ans++; Max=max(Max,x0+kx*i+y0+ky*i); Min=min(Min,x0+kx*i+y0+ky*i); } } return true;}int main(){ read(a); read(b); read(c); if(!(solve(a,b,c))) printf("-1 -1\n0"); else printf("%d %d\n%d",Min,Max,ans);}
未完成
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。