码迷,mamicode.com
首页 > 其他好文 > 详细

Dove 的疑惑

时间:2019-09-20 18:33:12      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:const   through   info   https   width   pre   技术   lse   pac   

中国新时代特色社会主义传承者的题解

 

技术图片

显然这是一道数学题

我们可以 大力猜结论 用心推式子

显然如果不管限制,答案是 π Mi

我们发现肯定要减一个东西

显然两个数的答案可以合并,考虑只有两个数

 

1.若 Mi Mj 互质:

  显然 { 0%Mj , 1%Mj ,2%Mj ... , (Mi-1)%Mj }={ 0 , 1 , 2 ... , Mj-1 }

  答案为 Mi * Mj

2.若 Mi Mj 不互质

  不妨令 Mi=ka Mj=kb (k>1)

  我们把 {0-Mi-1} {0-Mj-1}  分别剁成 a ,b 块 ,每块大小严格为 k

  什么时候不可以捏?因为 t%k=(t%Mi)%k y%k=(y%Mj)%k

  所以当 t%k != y%k 时就寿终正寝了

  所以每个 t ,y 在每个块中的位置必须一样

  答案为 a * b * k

综上,这TM不就是 LCM(Mi,Mj)吗?

 

Code:

#include<bits/stdc++.h>//math.cpp
#define qwq printf("qwq\n");
#define For(i,a,b) for(register ll i=a;i<=b;i++)
#define ll long long
using namespace std;
const ll maxn=1e5+10;
ll n,ans=1,cnt,l;
ll gcd(ll x,ll y){return y?gcd(y,x%y):x;}
ll lcm(ll x,ll y){return x*y/gcd(x,y);}
signed main(){
    scanf("%lld",&n);
    For(i,1,n){
        scanf("%lld",&l);
        ans*=l;
        if(i==1) cnt=l;
        else cnt=lcm(cnt,l);
    }
    printf("%lld\n",ans-cnt);
}

 

Dove 的疑惑

标签:const   through   info   https   width   pre   技术   lse   pac   

原文地址:https://www.cnblogs.com/monyhzc/p/11558557.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!