BZOJ2299 [HAOI2011]向量
这个题写了一页式子qaq(还看了题解
刚开始在luogu AC了但在BZOJ CE了
看不懂不想看但感觉是abs的锅, 自己定义了一个abs就好了QAQ
dalao告诉我gcd的时候else 也要加return , 最后加个return 0
这样:
而不是:
(虽然这样也能过qwq
我的证明:
哈哈哈哈哈哈哈哈哈就是这么草率qwq
代码:
1 #include<cstdio> 2 #include<iostream> 3 #define ll long long 4 using namespace std; 5 ll n, a, b, x, y, mid, sum; 6 ll read() { 7 char ch = getchar(); ll x = 0, f = 1; 8 while(ch > '9' || ch < '0') {if(ch == '-') f = -1; ch = getchar();} 9 while(ch >= '0' && ch <= '9') {x = x * 10 + ch - '0' ; ch = getchar();} 10 return x * f; 11 } 12 ll absabs(ll x) { 13 if(x < 0) return -x; 14 if(x >= 0) return x; 15 } 16 ll gcd(ll a, ll b) { 17 if(a < 0) a = -a; 18 if(b < 0) b = -b; 19 if(!b) return a; 20 else else gcd(b, a % b); 21 return 0; 22 } 23 int main() { 24 scanf("%lld", &n); 25 while(n--) { 26 bool flag = 0; 27 a = read(), b = read(), x = read(), y = read(); 28 mid = gcd(a*a - b*b, a*a + b*b); 29 sum = gcd(mid, 2*a*b); 30 ll o = absabs(a*y-b*x), s = absabs(b*y-a*x), t = absabs(a*y+b*x), f = absabs(b*y+a*x);//这里如果直接放到下面判断会报错QAQ窝也不知道为什么QAQ 31 if(o % sum != 0) flag = 1; 32 if(s % sum != 0) flag = 1; 33 if(t % sum != 0) flag = 1; 34 if(f % sum != 0) flag = 1; 35 if(flag) printf("N\n"); 36 else printf("Y\n"); 37 } 38 return 0; 39 }
加油加油!!!!!!!!!!!!!