Codeforces Round #645 (Div. 2) C. Celex Update
阿新 • • 發佈:2020-07-22
題目連結:C、Celex Update
題意:
給你如圖所示的圖形,問從(x1,y1)−>(x2,y2)路徑上的不同的元素和的數量是多少。
題解:
從(1,1)到(3,3)
元素和的1−2−4−8−13是這些元素和中最小的一個,然後1−2−5−8−13和之前的一個相比多了1,在2處增加一個的話,那麼就是1−3−5−8−13這就是增加了兩個的了,最後我們可以發現從最小的元素和到最大的元素中全部的都會出現,那麼就是計算中間的差值
這幾個塊,每多用一個,就比之前的多加1
程式碼:
#include<stdio.h> #include<algorithm> #include<iostream> #include<string> #include<queue> #include<deque> #include<string.h> #include<map> #include <iostream> #include <math.h> #define Mem(a,b) memset(a,b,sizeof(a)) constdouble II = acos(-1); const double PP = (II*1.0)/(180.00); using namespace std; typedef long long ll; const int INF=0x3f3f3f3f; const double eps=1e-6; const double PI=acos(-1); const int mod=998244353; const int maxn=1e5+10; ll gcd(ll m, ll n) { return n == 0 ? m : gcd(n, m % n); } ll lcm(ll m, ll n) {return m * n / gcd(m, n); } int main() { ll T; cin >> T; while (T--) { ll x1, x2, y1, y2; cin >> x1 >> y1 >> x2 >> y2; cout << (x2-x1)*(y2-y1)+1<< endl;; } return 0; }