寒假acm训练第三周

 

 这个题就是简单的数学思维

如果这个数组里全部都是10的倍数那直接计数达到n就直接出0

如果有其它不是10的倍数那找出最小的直接减去就可以了

下面就是代码

#include<iostream>
#include<cstring>
#include <cstdio>
#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
int a[1000];
int main()
{
    int n,sum=0;
    cin>>n;
    int rpg=0,x=200;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        sum=sum+a[i];
        if(a[i]%10==0)
        {
            rpg++;
        }
        if(a[i]%10!=0)
        {
            x=min(x,a[i]);
        }
    }
    if(rpg==n)
    {
        cout<<"0";
    }
    else
    {
        if(sum%10!=0)
        {
            cout<<sum;
        }
        if(sum%10==0)
        {
            sum=sum-x;
            cout<<sum;
        }
    }
    return 0;
}

 

 这道题比较坑

首先是如果大于3200那么他可以选任意一种颜色不止8种,所以不需要考虑他大不大于8

然后就是如果小于3200的没有那么就是最小是1,最大就是大于3200的人数

还是比较简单的

#include<iostream>
#include<cstring>
#include <cstdio>
#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
int a[1000],b[1000];
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    for(int i=1;i<=n;i++)
    {
        if(a[i]>=1&&a[i]<=399)
        {
            b[1]++;
        }
        if(a[i]>=400&&a[i]<=799)
        {
            b[2]++;
        }
        if(a[i]>=800&&a[i]<=1199)
        {
            b[3]++;
        }
        if(a[i]>=1200&&a[i]<=1599)
        {
            b[4]++;
        }
        if(a[i]>=1600&&a[i]<=1999)
        {
            b[5]++;
        }
        if(a[i]>=2000&&a[i]<=2399)
        {
            b[6]++;
        }
        if(a[i]>=2400&&a[i]<=2799)
        {
            b[7]++;
        }
        if(a[i]>=2800&&a[i]<=3199)
        {
            b[8]++;
        }
        if(a[i]>=3200)
        {
            b[9]++;
        }
    }
    int x=0,y;
    for(int i=1;i<=8;i++) {
        if (b[i] != 0) {
            x++;
        }
    }
       y=x+b[9];
        if(x==0)
        {
            x=1;
            y=b[9];
        }
    cout<<x<<" "<<y<<endl;
    return 0;
}

 

 这道题属于排列题

狗和猴排列不能有相同的在一起

所以如果狗和猴的数目相减大于1

那么就不能形成相应的队列

所以统一输出0

如果狗和猴相等

那可以查空

先排狗然后插在狗中间进行了

然后猴在这些中间然后还剩一个放左右即可*2进行了

如果差1

就不需要乘2

结果就出来了

#include<iostream>
#include<cstring>
#include <cstdio>
#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
const int  N=1e9+7;
int main()
{
    long long int n,m;
    cin>>n>>m;
    long long int sum=1;
    for(long long int i=1;i<=n;i++)
    {
        sum=(sum*i)%N;
    }
    if(max(n,m)-min(n,m)>1)
    {
        cout<<0;
        return 0;
    }
    else
    {
        for(long long int i=1;i<=m;i++)
        {
            sum=(sum*i)%N;
        }
       if(n==m)
       {
       sum=(sum*2)%N;
       }
    }
    cout<<sum;

    return 0;
}

 

posted @ 2023-01-22 17:40  whatdo+  阅读(17)  评论(0编辑  收藏  举报