共 10 个测试点
每个测试点 10 分
每个测试点限时 1 秒
运行内存上限 512MB
小 A 现在站在一个 n 个人的队伍里排队,他们的编号依次为 1∼n,现在她面前有 m 个窗口,其中第 i 个窗口会给出一个数字 ai,然后将队伍中所有编号为 ai 倍数的人带出队伍,请问最后队伍中还剩下多少个人?
输入格式
第一行两个用空格隔开的整数分别表示 n,m
第二行 m 个用空格隔开的整数,其中第 i 个代表 ai
输出格式
输出一个整数,代表剩下多少个人
数据规模与约定
对于 30% 的数据,1≤n≤100,1≤m≤10
对于 60% 的数据,1≤n≤1000,1≤m≤10
对于 100%的数据,1≤n≤100000,1≤m≤100,1≤ai≤n
样例输入
10 3
3 4 5
样例输出
3
代码:
#include
#include
#include
#include
using namespace std;
typedef long long ll;
int main()
{
int n,m,a[100005],ans=0,x;
cin>>n>>m;
memset(a,0,sizeof(a));
for(int i=0;i<m;i++)
{
cin>>x;
for(int i=x;i<=n;i+=x)//用筛法去除倍数
{
a[i]=1;
}
}
for(int i=1;i<=n;i++)
{
if(a[i]==0)ans++;
}
cout<<ans<<endl;
return 0;
}
共 10 个测试点
每个测试点 10 分
每个测试点限时 1 秒
运行内存上限 512MB
小 B 面前有 n 个开关,开始时第 i 个开关的状态是 ai,其中 ai=1 表示第 i 个开关是开的,ai=0表示第 i 个开关是关的。现在 小 B 获得了一种魔法,他可以进行若干次操作,每次操作可以选择一个数 x,然后把 x 号开关及其之前的所有开关状态反转(开变关,关变开),请问小 B 最少需要多少次操作才能使所有开关都变为关的状态。
输入格式
第一行一个整数表示 n
第二行为一个长度为 n 的 01 字符串,即每一位只会是 0 或者 1
输出格式
输出一个整数,表示最少需要多少次操作才能使所有开关都变为关的状态
数据规模与约定
对于 30% 的数据,1≤n≤20
对于 60% 的数据,1≤n≤2000
对于 100% 的数据,1≤n≤200000
样例输入
4
1001
样例输出
3
代码:
#include
#include
#include
#include
using namespace std;
typedef long long ll;
int main()
{
int n,ans=0;
char s[200005];
cin>>n;
cin>>s;
for(int i=n-1;i>=0;i--)
{
if(s[i]=='1'&&!(ans&&1))
{
ans++;
}
else if(s[i]=='0'&&(ans&&1)){
ans++;
}
}
cout<<ans<<endl;
return 0;
}
共 10 个测试点
每个测试点 10 分
每个测试点限时 1 秒
运行内存上限 512MB
给定两个字符串 S 和 T,它们都只由小写字母组成。现在请计算出字符串 S 的本质不同的排列中有多少种是字符串 T 的子串。
本质不同,就是看起来不同,例如 aab 有 3 种本质不同的排列 aab, aba, baa。
输入格式
第一行有一个字符串 S
第二行有一个字符串 T
输出格式
输出一个整数表示字符串 S 的本质不同的排列中有多少种是字符串 T 的子串
数据规模与约定
对于 30 的数据,1≤∣S∣≤5,1≤∣T∣≤200
对于 60% 的数据,1≤∣S∣≤2000,1≤∣T∣≤2000
对于 100% 的数据,1≤∣S∣≤200000,1≤∣T∣≤200000
样例输入
aab
abacabaa
样例输出
2
代码:
using namespace std;
string s,t;
set st;
int a[30],b[30];
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>s>>t;
int x=s.length();
int y=t.length();
if(x>y)//如果x长度大于y直接输出0
{
cout<<0<=x-1){
if(i!=x-1) b[t[i-x]-'a']--;
if(b[t[i]-'a']==a[t[i]-'a']){
bool ass=0;
for(char j='a';j<='z';j++){
if(b[j-'a']!=a[j-'a']){
ass=1;
break;
}
}
if(!ass)
st.insert(t.substr(i-x+1,x));
}
}
}
cout<