From 18e35e91d7004110c3e5b59a7126bc0286a87e07 Mon Sep 17 00:00:00 2001 From: Zengtudor Date: Sat, 8 Feb 2025 11:55:59 +0800 Subject: [PATCH] update --- CMakeLists.txt | 2 +- src/2/P1223.cpp | 29 +++++++++++++++++++++++++++++ src/2/P1375.cpp | 38 ++++++++++++++++++++++++++++++++++++++ src/2/P5656.cpp | 38 ++++++++++++++++++++++++++++++-------- 4 files changed, 98 insertions(+), 9 deletions(-) create mode 100644 src/2/P1223.cpp create mode 100644 src/2/P1375.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index ffa4cc1..cb5d5e4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) add_compile_options(-Wall) include_directories(${CMAKE_CURRENT_LIST_DIR}/include) -set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) diff --git a/src/2/P1223.cpp b/src/2/P1223.cpp new file mode 100644 index 0000000..7491921 --- /dev/null +++ b/src/2/P1223.cpp @@ -0,0 +1,29 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +int main(){ + using ll = int64_t; + ll n,nowWait=0,sumWait=0; + std::cin>>n; + std::vector> a(n+1); + for(ll i=1;i<=n;i++){ + std::cin>>a[i].first; + a[i].second=i; + } + std::sort(a.begin()+1,a.end()); + for(ll i=1;i<=n;i++){ + sumWait+=nowWait; + std::cout< +#include + +using ll = int64_t; + +constexpr ll p=1e9+7; +const ll n=[]()->ll{ll n;std::cin>>n;return n;}(); + +ll qpow(ll b,ll e){ + ll r{1}; + while(e){ + if(e&1)r=r*b%p; + b=b*b%p; + e/=2; + } + return r; +} + +ll inv(ll n){ + return qpow(n, p-2); +} + +ll mfact(const ll&b){ + ll r{1}; + for(ll i{1};i<=b;i++){ + r=r*i%p; + } + return r; +} + +ll C(const ll &n,const ll &m){ + return mfact(n)*inv(mfact(m))%p*inv(mfact(n-m))%p; +} + +int main(){ + const ll ans = C(2*n,n)-C(2*n,n-1); + std::cout<<(ans%p+p)%p<<'\n'; +} \ No newline at end of file diff --git a/src/2/P5656.cpp b/src/2/P5656.cpp index 9ad97c0..c3866b2 100644 --- a/src/2/P5656.cpp +++ b/src/2/P5656.cpp @@ -1,20 +1,42 @@ +#include #include +#include +#include using ll = int64_t; + ll T; -ll exgcd(ll a,ll b,ll&x,ll&y){ +std::tuple exgcd(ll const&a,ll const& b){ if(b==0){ - x=1,y=0; - return a; + return std::make_tuple(a,1,0); } - ll d = exgcd(b,a%b,x,y); - ll tempy = y; + auto [d,x,y] = exgcd(b, a%b); + ll oldy{y}; y=x-a/b*y; - x=tempy; - return d; + x=oldy; + return std::make_tuple(d,x,y); +} + +ll divup(ll const&a,ll const&b){ + return (a+(b>0?b-1:b+1))/b; } int main(){ - + std::cin>>T; + while(T--){ + const auto [a,b,c] {[]()->std::tuple{ll a,b,c;std::cin>>a>>b>>c;return std::make_tuple(a,b,c);}()}; + const auto [d,x1,y1] {exgcd(a,b)}; + if(c%d!=0){ + std::cout<<"-1\n"; + continue; + } + const ll kmin{divup(-x1*d,b)},kmax{y1*d/a}; + const ll knum{std::max(ll(0),kmax-kmin+1)}; + if(knum==0){ + std::cout<<(x1+kmax*b/d)<<' '<<(y1-kmin*a/d)<<'\n'; + }else{ + std::cout<<(x1+kmin*b/d)<<' '<<(y1-kmax*a/d)<<(x1+kmax*b/d)<<' '<<(y1-kmin*a/d)<<'\n'; + } + } } \ No newline at end of file