2018第九届蓝桥杯
1、 明码
#include<bits/stdc++.h>
using namespace std;
int const N=1e4+7;
void pan(int x,int t){
if(t==7){
if(x<0) cout << "*";
else cout << " ";
if(x&1) cout << "*";
else cout << " ";
return ;
}
pan(x>>1,t+1);
if(x&1) cout << "*";
else cout << " ";
}
int main(){
for(int i=1;i<=10;++i){
for(int j=1;j<=32;++j){
int x;cin >> x;
pan(x,1);
if(j%2==0) cout << "\n";
}
}
return 0;
}2、 乘积尾零
要产生0即10则需要2和5的因子,所以统计2和5因子的个数
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int const N=1e4+7;
ll cnt1,cnt2;
int main(){
for(int i=1;i<=10;++i){
for(int j=1;j<=10;++j){
int x;cin >> x;
while(x){
if(x%2==0) cnt1++,x/=2;
else if(x%5==0) cnt2++,x/=5;
else break;
}
}
}
cout << min(cnt1,cnt2);
return 0;
}3、测试次数
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int const N=1e4+7;
ll f[1007][5];
int main(){
memset(f,0x3f,sizeof f);
for(int i=1;i<=1000;++i) f[i][1]=i;
f[0][1]=0;
for(int k=2;k<=3;++k){
f[0][k]=0;
for(int i=1;i<=1000;++i){
for(int j=1;j<=i;++j){ //枚举第一部第一次手机扔的楼层
f[i][k]=min(max(f[j-1][k-1],f[i-j][k])+1,f[i][k] );
}
}
}
cout << f[1000][3];
return 0;
}4、
蓝桥真题 文章被收录于专栏
蓝桥真题的题解
