2 1 2 6 1 4 5
2 2 Impossible
首先,C如果是奇数肯定Impossible,然后就枚举咯。
#include<iostream> #include<cstring> #include<cstdio> using namespace std; int main(){ int t, a, b, c, d; scanf("%d", &t); while(t--){ scanf("%d%d%d", &a, &b, &c); if(c%2) printf("Impossible\n"); else { c /= 2; if(a>b) { // if(c%a==0) printf("%d 0\n", 2*c/a); // else if(c%a%b) { d = 0; // if(c%b) printf("Impossible\n"); // else printf("0 %d\n", 2*(c/b)); for(int i = c/a; i >= 0; i --){ if((c-a*i)%b==0) { printf("%d %d\n", 2*i, 2*(c-a*i)/b); d = 1; break; } } if(d==0) printf("Impossible\n"); // } // else { // printf("%d %d\n", 2*(c/a), 2*(c%a/b)); // } } else { // if(c%b==0) printf("0 %d\n", 2*c/b); // else if(c%b%a) { d = 0; // if(c%a) printf("Impossible\n"); // else printf("%d 0\n", 2*(c/a)); for(int i = c/b; i >= 0; i --){ if((c-b*i)%a==0) { printf("%d %d\n", 2*(c-b*i)/a, 2*i); d = 1; break; } } if(d==0) printf("Impossible\n"); // } // else { // printf("%d %d\n", 2*(c/b), 2*(c%b/a)); // } } } } return 0; }
代码有些累赘,为了保持思考过程就没删去。