The 2020 ICPC Asia Shenyang Regional Programming Contest I. Rise of Shadows


【題意】

原題

就是給定一個新定義的時鍾,時針H小時轉一圈,分針M分鍾轉一圈,問又多少時刻兩個針的夾角小於等於$\alpha$,其中$\alpha=\frac{2\pi A}{HM}$

【分析】

這么基礎的題目,我考場上竟然交了九發都沒過,:(

考慮相對運動,很容易就得到了求有多少$t$,滿足$t\in[0,HM)$,st.

$t(H-1) mod  HM \leq A ort(H-1)  modHM \ge HM-A$

同時除以$d=gcd(H-1,HM)$

$\frac{t(H-1)}{d} mod\frac{HM}{d} \leq \frac{A}{d} or \frac{t(H-1)}{d} mod \frac{HM}{d} \ge \frac{HM-A}{d}$

這樣我們就得到了第一個方程有$\frac{A}{d}+1$個解,第二個有$\frac{A}{d}$個解

這樣總個數為$d(2\lfloor\frac{A}{d}\rfloor+1)$

 

但是,要注意當$A=\frac{HM}{2}$的時候要特判,答案為$HM$,考場就掛這兒了!!

 

【代碼】

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll H,M,A,d;
ll gcd(ll a,ll b)
{
    if(!b) return a;
    return gcd(b,a%b);
}
int main()
{
    //freopen("a.in","r",stdin);
    //freopen("a.out","w",stdout);
    scanf("%lld%lld%lld",&H,&M,&A);
    if(A==H*M/2)
    {
        printf("%lld",H*M);
        return 0;
    }
    d=gcd(H-1,H*M);
    printf("%lld",d*(1+2*(A/d)));
    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM