A-链接:https://www.nowcoder.com/acm/contest/71/A
来源:牛客网

给定n个正整数,请找出其中有多少个数x满足:在这n个数中存在数y=kx,其中k为大于1的整数

输入描述:

第一行输入一个n
接下来一行输入n个正整数ai

输出描述:

输出符合条件个数
示例1

输入

5
1 2 3 4 5

输出

2

说明

5个数中1和2符合条件,1是后面每个数的因子,2是4的因子

备注:

1≤n,a≤1000000

  询问一个a[i]=x的整数倍(>1倍)是否也在数列中,统计x的个数;
用类似筛法的写法,对于x,检查kx(k>1)是否为真,如果存在就累加所有的x,复杂度O(nlog(n));
 #include <bits/stdc++.h>
using namespace std;
int z, n, v[];
int main() {
scanf("%d", &n);
for (int i = ; i < n; i++) {
int x;
scanf("%d", &x);
v[x]++;
}
for (int i = ; i <= ; i++) {
for (int j = i + i; j <= ; j += i) {
if (v[j] > ) {
z += v[i];
break;
}
}
}
printf("%d\n", z);
}

B-链接:https://www.nowcoder.net/acm/contest/71/B
来源:牛客网

设s,t为两个字符串,定义f(s,t) = t的子串中,与s相等的串的个数。如f("ac","acacac")=3, f("bab","babab")=2。现在给出n个字符串,第i个字符串为si。你需要对,求出,由于答案很大,你只需要输出对 998244353取模后的结果。

输入描述:

第一行一个整数n。
接下来n行每行一个仅由英文字母构成的非空字符串,第i个字符串代表s

i

输出描述:

共n行,第i行输出

对 998244353取模的结果。
示例1

输入

1
BALDRSKYKirishimaRain

输出

1

备注:

1 ≤ n ≤ 10

6

,所有字符串的总长度不超过2*10

6

  说实话有点想骂人了,浪费我这么长时间一直以为自己kmp写傻逼了,最后把cout<<endl换成cout<<'\n'就能过全部数据我。。。。。。
注意到除了长度最小的字符串S,只要比S大的那么这个i对应的那一行的输出必定是零,比S大或长度相同但内容不同自然不会匹配成功,有一个为零答案就是0;
然后再对S向所有的字符串都跑一遍kmp,复杂度是O(L),L为字符串总长度。
 #include<bits/stdc++.h>
using namespace std;
#define LL long long
const int MAXN=;
int MOD=;
string str[MAXN],S;
int f[MAXN*];
int ans;
int main()
{
ios::sync_with_stdio(false);
cin.tie();
int n,i,j,k;
cin>>n;
cin>>str[];
S=str[];
for(i=;i<=n;++i){
cin>>str[i];
if(str[i].length()<S.length())
S=str[i];
}
ans=;
f[]=-;
j=-;
for(i=;i<=S.length();++i){
j=f[i-];
while(j!=-&&S[i-]!=S[j])j=f[j];
f[i]=j+;
}
for(i=;i<=n;++i){
LL tmp=;
int len=str[i].length();
for(j=,k=;k<len;++k){
if(S[j]==str[i][k]) j++;
else{
while(j!=-&&S[j]!=str[i][k])j=f[j];
if(j!=-&&S[j]==str[i][k])j++;
else j=;
}
if(j==S.length()){j=f[j];tmp++;}
}
ans=(LL)ans*tmp%MOD;
if(!ans)break;
}
for(i=;i<=n;++i){
if(str[i]==S)
cout<<ans<<'\n';
else
cout<<<<'\n';
}
return ;
}

C-链接:https://www.nowcoder.com/acm/contest/71/C
来源:牛客网

小W在计算一个数列{An},其中A1=1,A2=2,An+2=An+1+An。尽管他计算非常精准,但很快他就弄混了自己的草稿纸,他找出了一些他计算的结果,但他忘记了这些都是数列中的第几项。

输入描述:

每行包括数列中的一项Ak(k<=100000)。

总行数T<=30。

输出描述:

对于每一项Ak,输出一行包括一个正整数k表示输入中数是数列的第几项。

示例1

输入

2
3
5
8
13

输出

2
3
4
5
6
显然要用到大数,但想要计算前十万个数并且保存一定MLE了,我们只留下最多40位末尾的数,显然这样的话末尾四十位的计算一定是正确的,而前100000项末尾四十位全部相同的几率是很小的,
大数一开始重载+莫名出bug,改成函数就好了。
 #include<bits/stdc++.h>
using namespace std;
struct Bign
{
int a[];
Bign(){memset(a,,sizeof(a));}
void print(){
for(int i=a[];i>=;--i)
printf("%d",a[i]);puts("");
}
}B[];
Bign add(Bign A,Bign chs){
int sz=max(A.a[],chs.a[]);
for(int i=;i<=sz;i++){
A.a[i]+=chs.a[i];
if(A.a[i]>){
A.a[i+]++;
if(i+>sz) A.a[]=++sz;
A.a[i]%=;
}
}
return A;
}
bool ok(Bign A,Bign B){
if(A.a[]!=B.a[]) return ;
for(int i=;i<=A.a[];++i){
if(A.a[i]!=B.a[i]) return ;
}
return ;
}
string s;
int main()
{
B[].a[]=B[].a[]=;
B[].a[]=;
B[].a[]=;
for(int i=;i<=;++i){
B[i]=add(B[i-],B[i-]);
if(B[i].a[]>){
for(int j=;j<=B[i].a[];++j)
B[i].a[j]=;
B[i].a[]=;
}
}
//B[100000].print();
while(cin>>s){//B[1000].print();
Bign x;
int n=s.size();
if(n>)n=;
reverse(s.begin(),s.end());
x.a[]=n;
for(int i=;i<=n;++i)
x.a[i]=s[i-]-'';
for(int i=;;i++){
if(ok(x,B[i])){
cout<<i<<endl;
break;
}
}
}
return ;
}

牛客比赛-Wannafly9-A/B/C的更多相关文章

  1. 牛客比赛-假的字符串-Trie+拓扑

    链接:https://www.nowcoder.com/acm/contest/59/B来源:牛客网 题目描述 给定n个字符串,互不相等,你可以任意指定字符之间的大小关系(即重定义字典序),求有多少个 ...

  2. 牛客比赛-状压dp

    链接:https://www.nowcoder.com/acm/contest/74/F来源:牛客网 德玛西亚是一个实力雄厚.奉公守法的国家,有着功勋卓著的光荣军史. 这里非常重视正义.荣耀.职责的意 ...

  3. 牛客寒假算法基础集训营3B 处女座的比赛资格(用拓扑排序解决DAG中的最短路)

    链接:https://ac.nowcoder.com/acm/contest/329/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  4. 牛客OI周赛9-提高组题目记录

    牛客OI周赛9-提高组题目记录 昨天晚上做了这一套比赛,觉得题目质量挺高,而且有一些非常有趣而且非常清奇的脑回路在里边,于是记录在此. T1: 扫雷 题目链接 设 \(f_i\) 表示扫到第 \(i\ ...

  5. 牛客练习赛43 Tachibana Kanade Loves Game (简单容斥)

    链接:https://ac.nowcoder.com/acm/contest/548/F来源:牛客网 题目描述 立华奏是一个天天打比赛的萌新. 省选将至,萌新立华奏深知自己没有希望进入省队,因此开始颓 ...

  6. 牛客练习赛43 Tachibana Kanade Loves Review C(最小生成树Kruskal)

    链接:https://ac.nowcoder.com/acm/contest/548/C来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 QingyuQingyu 当 ...

  7. 牛客练习赛28 B数据结构(线段树)

    链接:https://www.nowcoder.com/acm/contest/200/B来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  8. 牛客网Wannafly挑战赛25A 因子(数论 素因子分解)

    链接:https://www.nowcoder.com/acm/contest/197/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  9. 牛客网NOIP赛前集训营-提高组(第一场)

    牛客的这场比赛感觉真心不错!! 打得还是很过瘾的.水平也比较适合. T1:中位数: 题目描述 小N得到了一个非常神奇的序列A.这个序列长度为N,下标从1开始.A的一个子区间对应一个序列,可以由数对[l ...

随机推荐

  1. IIS设置文件 App_Offline.htm 网站维护

    在ASP.NET 2.0 站点根目录下,只要存在 App_Offline.htm 文件,那么所有对.aspx的请求都将转向App_Offline.htm .而且浏览器的地址栏显示的是所请求的.aspx ...

  2. python学习之路-第三天-函数

    函数 函数的定义关键字:def 使用global语句可以清楚地表明变量是在外面的块定义的 示例:(函数运行完毕后x的值是2) #!/usr/bin/python # Filename: func_gl ...

  3. matlab出错及改正

    1 使用小波分析时,出现下面错误: 错误使用 wavedec需要的 X 应为 矢量.出错 wavedec (line 34)validateattributes(x,{'numeric'},{'vec ...

  4. java队列的实现

    队列也可以通过数组和链表两种方式来实现. 1.链表方式实现 class Node{ Node next = null; int data; public Node(int data){this.dat ...

  5. PAT 天梯赛 L1-018. 大笨钟 【水】

    题目链接 https://www.patest.cn/contests/gplt/L1-018 AC代码 #include <iostream> #include <cstdio&g ...

  6. 《TCP/IP详解:卷一》-TCP部分讲解

    TCP/IP协议 作者:Danbo 2015-7-2 本文为参考TCP/IP详解卷一,某些知识点加上了作者自己的理解,如有错误,欢迎指正,可以微博联系我! TCP包格式和IP包格式如下: TCP的正常 ...

  7. NIO复习03

    SocketChannel: 1. Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道.可以通过以下2种方式创建SocketChannel: 打开一个SocketChan ...

  8. Leaflet API 翻译(一)

    摘自:http://jsrookie.iteye.com/blog/2318972 L.Map API各种类中的核心部分,用来在页面中创建地图并操纵地图. Constructor(构造器) 通过div ...

  9. ASP.NET MVC Bootstrap模板选中菜单高亮显示当前项方法

    当我们处理后台显示当前页面,当前页菜单项高亮,我们可以使用js方法,也可用程序实现,使用Bootstrap模板处理高亮并展开方法之一 1.在项目中导入 <script src="/as ...

  10. BeatSaber节奏光剑双手柄MR教程

    一.物料准备: 1 显卡1060及以上的PC主机 2 HTC VIVE头盔一套(头盔直插显卡上的HDMI接口) 3 1080P摄像头一个(插USB3.0) 4 绿幕一套,能覆盖整个摄像头的可拍摄范围即 ...