列表

详情


NC200194. 3的倍数

描述

给你  个字符串,每个字符串最多包含 26个字母, 现在取了一些字符串,发现每个字母出现的次数都是  的倍数, 现在想要知道在满足每个字母出现的次数都是  的倍数的前提下,最多能取多少个字符串。

输入描述

第一行一个数字 ,表示字符串的个数

接下来  行,每行一个字符串

输出描述

在一行中输出  最多能取多少个字符串。

示例1

输入:

3
AB
AABBCCC
BB

输出:

2

说明:

取第一个字符串和第二个字符串。

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C(clang11) 解法, 执行用时: 6ms, 内存消耗: 488K, 提交时间: 2021-05-15 11:02:40

#include<stdio.h>
int main()
{
char str[150000];
int a[26],n,sign=0,k=0,i,j1,j2;
	scanf("%d",&n);
    for(i=1;i<=n;i++){
        sign=0;
		gets(str);
        for( j1=0;str[j1]!='\0';j1++) 
			a[str[j1]-'A']++;a;
        for(j2=0;j2<26;j2++) 
			if(a[j2]%3!=0) 
				sign=1;
        if(!sign !=0) 
			k=i;
    }
	printf("%d\n",k-1);
}

C++14(g++5.4) 解法, 执行用时: 6ms, 内存消耗: 404K, 提交时间: 2020-08-13 19:43:39

#include<bits/stdc++.h>
using namespace std;
string x;
int a[31],n,p=0,k=0;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		p=0;
		cin>>x;
		for(int j=0;x[j]!='\0';j++) a[x[j]-'A']++;
		for(int t=0;t<26;t++) if(a[t]%3!=0) p=1;
		if(!p) k=i;
	}
	cout<<k;
}

C++11(clang++ 3.9) 解法, 执行用时: 6ms, 内存消耗: 476K, 提交时间: 2020-08-13 18:04:51

#include<iostream>
using namespace std;
string x;
int a[31],n,p=0,k=0;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		p=0;
		cin>>x;
		for(int j=0;x[j]!='\0';j++) a[x[j]-'A']++;
		for(int t=0;t<26;t++) if(a[t]%3!=0) p=1;
		if(!p) k=i;
	}
	cout<<k;
}

上一题