CCPC-Wannafly Winter Camp Day3 (Div2)

目录

A 二十四点*

F 小清新数论*

G 排列


 A 二十四点*

CCPC-Wannafly Winter Camp Day3 (Div2)_第1张图片

CCPC-Wannafly Winter Camp Day3 (Div2)_第2张图片

【分析】手动打表。测试点就两个,也就是只需要算n=10的时候有多少就可以了。n=10,最多也就1024-1种。

不是“好的序列”:1张牌有10个,2张牌有 43 个, 3张牌有74个,4 张牌5个。后面的肯定会有的,因为不是每张牌都要用到

1024减去这些~  答案出来了...

( 做题时手动打表,但是觉得太多了没继续... 〒▽〒

【代码】

#include
#include 
#include
#include
#include
using namespace std;

int  main()
{
    int n,a[20];
    while(~scanf("%d",&n))
    {
        for(int i=1;i<=n;i++) scanf("%d",&a[i]);
        if(n==6) printf("32\n");
        else  printf("891\n");
    }
}

F 小清新数论*

CCPC-Wannafly Winter Camp Day3 (Div2)_第3张图片

CCPC-Wannafly Winter Camp Day3 (Div2)_第4张图片

【分析】队友代码...先贴

【代码】

#include
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define SI(i) scanf("%d",&i)
#define PI(i) printf("%d\n",i)
using namespace std;
typedef long long ll;
const int maxn=1e7+5;
const int INF=0x3f3f3f3f;
const double eps=1e-8;
int dir[9][2]={0,1,0,-1,1,0,-1,0, -1,-1,-1,1,1,-1,1,1};
templatebool gmax(T &a,T b){return abool gmin(T &a,T b){return a>b?a=b,1:0;}
ll gcd(ll a,ll b){ while(b) b^=a^=b^=a%=b; return a;}
ll inv(ll b,ll mod){return b==1?1:(mod-mod/b)*inv(mod%b,mod)%mod;}
ll ans;
ll fac[maxn]; //(a<=n,b<=m)范围内gcd=i的个数(筛选:i的倍数都应该减掉)
int mu[maxn];
const int mod=998244353;

ll cnt,prime[maxn],vis[maxn],pp[maxn];
void get_mu(int n)
{

    memset(vis,0,sizeof(vis));
    memset(prime,0,sizeof(prime));
    memset(mu,0,sizeof(mu));
    cnt=0; 
    mu[1]=1;vis[1]=1;
    pp[0]=0;pp[1]=1; 
    for(ll i=2;i<=n;i++)
    {
        //printf(",%d\n,",i);
        if(!vis[i])
        {
            prime[++cnt]=i;
            pp[i]=i-1; 
            mu[i]=-1;
        }
        for(ll j=1;j<=cnt && prime[j]*i<=n;j++)
        {
            vis[prime[j]*i]=1;
            if(i%prime[j]==0)
            {
                mu[prime[j]*i]=0;
                pp[i*prime[j]]=pp[i]*prime[j]; 
                break;
            }
            mu[prime[j]*i]=-mu[i];
            pp[i*prime[j]]=pp[i]*(prime[j]-1); 
        }
    }
    for(int i=1;i<=n;i++)pp[i]+=pp[i-1];
	for(int i=1;i<=n;i++)fac[i]=2*pp[n/i]-1; 
}

int main()
{
    int n,m,p,T;
    ans=0;

        scanf("%d",&n);
        get_mu(n);

        ll ans=0;
        for(int i=1;i<=n;i++){
            ans+=(mu[i]*fac[i]+mod)%mod;
            ans%=mod;
        }
        printf("%lld\n",ans);

    return 0;
}

G 排列

CCPC-Wannafly Winter Camp Day3 (Div2)_第5张图片

CCPC-Wannafly Winter Camp Day3 (Div2)_第6张图片

【代码】

#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;

const int maxn=1e5+5;
int p[maxn],q[maxn]; 

int main()
{
	int n;scanf("%d",&n);
	for(int i=1;i<=n;i++)
		scanf("%d",&q[i]); 
	q[0]=0x3f3f3f3f; 
	int idx=1;
	for(int i=1;i<=n;i++)
	{
		 if(q[i]

 

你可能感兴趣的:(Comet,OJ)