第九届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
1.第几天(√);
2.乘积尾零(√);(拆分为2和5,统计个数)
#include <iostream>
using namespace std;
int a[11][11];
int main()
{
int x=0,y=0;
for(int i=1;i<=10;i++)
{
for(int j=1;j<=10;j++)
{
cin>>a[i][j];
while(a[i][j]%2==0)
{
a[i][j]/=2;
x++;
}
while(a[i][j]%5==0)
{
a[i][j]/=5;
y++;
}
}
}
cout<<min(x,y);
return 0;
}
3.递增三元组
#include<stdio.h>
#include<algorithm>
using namespace std;
const int maxn=100010;
int main()
{
int n;
int a[maxn],b[maxn],c[maxn];
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
sort(a,a+n);
for(int i=0;i<n;i++){
scanf("%d",&b[i]);
}
sort(b,b+n);
for(int i=0;i<n;i++){
scanf("%d",&c[i]);
}
sort(c,c+n);
long long sum=0,s1=0,s2=0;
for(int i=0;i<n;i++){
while(s1<n&&a[s1]<b[i]) s1++;
while(s2<n&&c[s2]<=b[i])s2++;
sum+= ((long long)s1*(n-s2));
}
printf("%lld",sum);
return 0;
}
3.日志统计
#include <bits/stdc++.h>
using namespace std;
const int N=100005;
struct Node{
int ts,id;
}p[N];
bool cmp(Node a,Node b)
{
return a.id<b.id;
}
int main()
{
int n,d,k;
cin>>n>>d>>k;
for(int i=0;i<n;i++)
{
cin>>p[i].id>>p[i].id;
}
sort(p,p+n,cmp);
for(int i=0,j=i;i<n&&j<n;i++)
{
int z=0;
while(p[i].id==p[j].id&&p[j].ts<p[i].ts+d&&j<n)
{
z++;
j++;
}
if(z>=k)
{
cout<<p[i].id<<endl;
}
}
return 0;
}