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

洛谷 P3750 [六省联考2017]分手是祝愿

时间:2018-03-19 20:52:17      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:ble   namespace   back   getch   blog   ref   cto   typename   ring   

传送门

题解

技术分享图片
//Achen
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<vector>
#include<cstdio>
#include<queue>
#include<cmath>
const int N=100000,mod=100003;
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
typedef long long LL;
typedef double db;
using namespace std;
int n,k,a[N],cnt;
LL rs,f[N],inv[N];
vector<int>vc[N];

template<typename T>void read(T &x)  {
    char ch=getchar(); x=0; T f=1;
    while(ch!=-&&(ch<0||ch>9)) ch=getchar();
    if(ch==-) f=-1,ch=getchar();
    for(;ch>=0&&ch<=9;ch=getchar()) x=x*10+ch-0; x*=f;
}

void solve() {
    For(i,1,n) 
        For(j,1,n/i) 
            vc[i*j].push_back(i); 
    Rep(i,n,1) if(a[i]) {
        int up=vc[i].size();
        For(j,0,up-1) 
            a[vc[i][j]]^=1;
        cnt++;
    }
    rs=cnt;
    if(cnt>k) {
        rs=k;
        f[n]=1; inv[1]=inv[0]=1;
        For(i,2,n) inv[i]=(mod-mod/i*inv[mod%i]%mod)%mod;
        Rep(i,n-1,k) 
            f[i]=(((LL)n-i)*inv[i]%mod*(f[i+1]+1)%mod+1)%mod;
        For(i,k+1,cnt) rs=(rs+f[i])%mod;
    }
    For(i,1,n) rs=rs*i%mod;
    printf("%lld\n",rs);
}

int main() {
    read(n); read(k);
    For(i,1,n) read(a[i]);
    solve();
    return 0;
}
View Code

 

洛谷 P3750 [六省联考2017]分手是祝愿

标签:ble   namespace   back   getch   blog   ref   cto   typename   ring   

原文地址:https://www.cnblogs.com/Achenchen/p/8604385.html

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