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、
蓝桥真题 文章被收录于专栏
蓝桥真题的题解