# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
981408 | 2024-05-13T07:17:30 Z | Faisal_Saqib | 육각형 영역 (APIO21_hexagon) | C++17 | 0 ms | 0 KB |
#include "hexagon.h" #include "grader.cpp" #include <vector> using namespace std; #define ll long long const ll mod=1e9+7; ll powmod(ll a,ll b,ll mod) { if(b==0) { return 1; } if(b==1) { return a; } ll cp=powmod(a,b/2,mod); cp=(cp*cp)%mod; if(b%2) { cp=(cp*a)%mod; } return cp; } int draw_territory(int N, int A, int B,std::vector<int> D, std::vector<int> L) { ll total_cell=L[0]+1,two=2; total_cell=(((total_cell*(total_cell+1))%mod)*powmod(two,mod-2,mod))%mod; ll ap=A; ll ans=(total_cell*ap)%mod; // cell with distance i are i+1 // So (i*b)*(i+1) // Sum of ((i*(i+1))) *b ll po=(powmod(2,n+1,mod)*b)%mod; // (i+1 C 2) = 2**(i+2) ans=(ans+po)%mod; return ans; // return (total_cell*ap)%mod; }