首页 > 其他分享 >牛客周赛 Round 31(很菜的小白)

牛客周赛 Round 31(很菜的小白)

时间:2024-02-04 23:22:20浏览次数:26  
标签:std 周赛 很菜 int 31 long ans using ll

A.小红小紫替换

思路:

签到题,字符串如果是kou 就替换成yukari 取余不变

解法:

Code:

#include<bits/stdc++.h>

using namespace std;

int main()
{
    string s;
    std::cin >> s;
    std::cout << (s == "kou" ? "yukari\n" : s) << '\n';
    return 0;
}

  

B.小红的因子数

思路:

她想知道x有多少个不同的素因子,所以它的素因子不能是重复的,由于题解方法很多,这里只写两种

解法:

利用根号分解1到根号x就行,由于题意简单,掉坑点 x -> 1e13

Code:

解法1.

#include<bits/stdc++.h>

using namespace std;
using ll = long long;

ll Cnt(ll val)
{
    ll ans = 0;//计数的答案
    for (ll i = 2; i * i <= val; i++)
    {
        if (val % i == 0)
        {
            ans ++;
            while (val % i == 0) {
                val /= i;
            }
        }
    }
    if (val > 1)
    {
        ans++;
    }
    return ans;
}

int main()
{
    ll x;
    std::cin >> x;
    std::cout << Cnt(x) << '\n';
    return 0;
}

  

解法2:(STL 中 set储存不重复的值升序排列, map也是可以)

#include<bits/stdc++.h>

using namespace std;
using ll = long long;

ll Cnt(ll val)
{
    set<ll> st;
    ll ans = 0;//计数的答案
    for (ll i = 2; i * i <= val; i++)
    {
        while (val % i == 0)
        {
            st.insert(i);
            val /= i;
        }
    }
    if (val > 1)
    {
        st.insert(val);
    }
    for (auto& x : st) {
        ans++;    
    }
    return ans;
}

int main()
{
    ll x;
    std::cin >> x;
    std::cout << Cnt(x) << '\n';
    return 0;
}

  

C.小红的字符串中值

思路:

枚举每个字符作为中值带来的贡献就是题意

解法:

/* 
int n = 8, char x = b;

abcbcbaa

首先我们不乏发现这个字符串有三个b
先看第一个b

a(1)  b cccbaa(6)
中值 那么只有abc 和 b -》 2
再看第一个b

abc(3) b cbaa(4)
只有 abcbcba 和 bcbc 和 cbc 和 b -》 4

再看最后的b
abcbc(5) b aa(2)
只有 bcbaa 和 cba 和 b -》 3

总计 2 + 4 + 3 -》 9                           i-> 索引 左边和右边的最小值  +  1
你会发现它有个规律(你就可以推出它的方程了) -> min(i, n - i - 1) + 1
 */

  

Code:

#include<bits/stdc++.h>

using namespace std;
using ll = long long;

int main()
{
    int n;
    ll cnt = 0;//有n -> 1e5假设都是a char -> a所输出的长度是超过int范围的
    char x;
    std::string s;
    std::cin >> n >> x >> s;
    for (int i = 0; i < n; i++)
    {
        if (x == s[i])
        {
            cnt += min(n - i - 1, i) + 1;
        }
    }
    std::cout << cnt << '\n';
    return 0;
}

  

标签:std,周赛,很菜,int,31,long,ans,using,ll
From: https://www.cnblogs.com/youhualiuh/p/18007211

相关文章

  • [MY-013183] [InnoDB] Assertion failure: dict0dict.cc:1869:table->get_ref_count()
    背景:执行altertableTABLE_NAMEdroppartitionPART_NAME;时执行过程中执行了ctrl+c导致mysql服务器崩溃自动重启。mysql错误日志内容:2024-02-02T10:30:32.424737+08:00460639464[ERROR][MY-013183][InnoDB]Assertionfailure:dict0dict.cc:1869:table->get_ref_count......
  • FastAPI学习-31 FastAPI 如何集成 socket.io
    前言socket.io就是基于websocket封装的一个库,主要特点是能够进行实时的双向通讯,主要应用场景有实时的聊天,数据实时分析,数据传输,文件协同合作。有个socket.io的fastapi-socketio官方库,该库依赖传统的python-socketio库环境准备pipinstallfastapi-socketiofastapi服务端代码......
  • 2024.1.31 总结
    上午接到姜\(sir\)通知后就开始召集讲题组并开始写题解。\(B\)属于结论题,题解和我赛时的结论不一样,然后就都证明了一下。Link\(D\)有一点难,借鉴了Register_int的题解,\(dp\)那段卡了一小段时间。Link晚上吴队讲题(实验舱\(06\))\(A\)其实很简单,只需要统计奇数度数的点,最......
  • Acwing第 141 场周赛
    A题签到模拟即可B题单独考虑每一个a[i],如果i要是答案需要指针移动多少次,然后算完,排个序,指针移动最少的就是答案。#include<bits/stdc++.h>#defineintlonglong#definerep(i,a,b)for(inti=(a);i<=(b);++i)#definefep(i,a,b)for(inti=(a);i>=(b);--i)......
  • hdu 1312 Red and Black (BFS模板题)
    Problem-1312(hdu.edu.cn)BFS模板题#include<iostream>#include<queue>usingnamespacestd;typedeflonglongll;constintINF=0x3f3f3f3f;intwx,hy,num;charroom[25][25];#defineCHECK(x,y)(x>=0&&x<wx&&y>=0&&am......
  • 寒假训练1/31
    寒假训练2024/1/31今天主要是补题。codeforce161E-IncreasingSubsequences题意:T组询问,每次给你一个X($[2,10^{18}]$),你需要构造一个长度不超过200,值域$∈[−109,109]$的序列使得其单调上升子序列个数恰为X(包含空子序列且不同位置的相同上升子序列算作不同的上升子序......
  • [转帖]彻底搞明白 GB2312、GBK 和 GB18030
    https://www.zhihu.com/people/lion-89 日常工作的过程中,关于字符编码的问题经常让人头疼不已,这篇文章就来捋一捋关于GB2312、GBK、GB18030相关的知识以及它们和Unicode的关系简介GB23121980年,中国发布了第一个汉字编码标准,也即GB2312,全称《信息交换用汉字......
  • Poj3126 Prime Path (BFS+筛素数)
    #include<iostream>#include<queue>#include<cstring>constintN=10010;intt,aa,bb,prime[N],vis[N],step[N];usingnamespacestd;voidprime_(){//埃式筛法prime[0]=prime[1]=1;for(inti=2;i<10000;i++){if(prime[i])contin......
  • P4231 三步必杀
    原题链接算是差分的进阶吧,这道题算是差分+差分的题目,即要两次差分再求前缀和。先来解释原理:给定一个数组a长度为n,初始都为0。接下来m个操作:1、在l~r的范围上加上一个首项为s,末项为e的等差数列。接着求出m次操作后数组a的各项值例如【0,0,0,0,0,0,0,0,0,0】的数组一次操作为在4~8的......
  • 2024.1.31题目选讲
    CF1753C首先求出整个数列有多少个0,设为sum0,再求出\(1--sum0\)中有多少个1,设为\(sum1\)显然,我们的目标就是把\(1--sum0\)中全部变成0那么考虑有意义的一步的期望次数,由于线性性,可以全部加起来设左边还有x个1(左边就是\(1--sum0\))交换到的概率为\(\dfrac{x^2}{n(n+1)/2}\),那么......