您当前的位置: 首页 > 

MangataTS

暂无认证

  • 0浏览

    0关注

    423博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Codeforces 697div3

MangataTS 发布时间:2022-02-07 15:57:08 ,浏览量:0

文章目录
  • A. Odd Divisor(思维)
    • 题意
    • 解题思路
    • Code
  • B. New Year's Number(暴力+思维)
    • 题意
    • 解题思路
    • Code
  • C. Ball in Berland(思维)
    • 题意
    • 解题思路
    • Code
  • D. Cleaning the Phone(前缀+二分)
    • 题意
    • 解题思路
    • Code
  • E. Advertising Agency(组合数学)
    • 题意
    • 解题思路
    • Code

A. Odd Divisor(思维) 题意

给你一个n,如果n有一个奇数因子就输出YES,否则输出NO

解题思路

我们从n开始判断当前是否是奇数,如果是,则直接输出YES,否则就一直右移一位直到n为1,然后输出NO

Code
#include
using namespace std;
#define ll long long

bool f(ll n) {
    while(n != 1) {
        if(n%2 == 1)
            return true;
        n >>= 1;
    }
    return false;
}

int main()
{
    ll n,x,t;
    scanf("%lld",&t);
    while(t--) {
        scanf("%lld",&n);
        if(f(n)) {
            puts("YES");
        }
        else
            puts("NO");
    }


    return 0;
}
B. New Year’s Number(暴力+思维) 题意

给你一个n问你是否能用一定数量的2020和2021凑齐n(刚好等于)

解题思路

1.看一眼数据n的范围为[1,1e6],直接暴力二重循环跑500就行

2.我们可以先计算n对2020的余数a以及n对2020的商b,如果a >n; int a = n % 2020; int b = n / 2020; if(a > b) puts("NO"); else puts("YES"); } return 0; } C. Ball in Berland(思维) 题意

输入一个a,b,k分别表示男生的数量和女生的数量,以及k个组合,问你从中取出两组,且同一个人不能在两组有多少中组合方式

解题思路

利用两个数组记录男女在组合中出现的次数,再遍历一遍所有组合,用总人数减去当前组的人物编号总共出现的次数,即冲突的组数,最后要加上自己。结果要开long long存储。

Code
#include
using namespace std;
#define ll long long

const int N = 200005;

int a[N],b[N];
int fa[N],fb[N];

int main()
{
    int t,A,B,k,temp;
    scanf("%d",&t);
    while(t--) {
        scanf("%d%d%d",&A,&B,&k);
        memset(fa,0,sizeof fa);
        memset(fb,0,sizeof fb);
        ll l = 0,r = 0;
        for(int i = 0;i             
关注
打赏
1665836431
查看更多评论
0.0378s