1. 程式人生 > 實用技巧 >Codeforces Round #645 (Div. 2) C. Celex Update

Codeforces Round #645 (Div. 2) C. Celex Update

題目連結: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))
const
double 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; }