第十三届蓝桥杯大赛软件赛省赛CC++大学B组
第十三届蓝桥杯大赛软件赛省赛CC++ 大学 B 组
文章目录
- 第十三届蓝桥杯大赛软件赛省赛CC++ 大学 B 组
- 1、九进制转十进制
- 2、顺子日期
- 3、刷题统计
- 4、修建灌木
- 5、x进制减法
- 6、统计子矩阵
- 7、积木画
- 8、扫雷
- 9、李白打酒加强版
- 10、砍竹子
1、九进制转十进制
计算器计算即可。2999+29+2。
2、顺子日期
简单的枚举一下2022年的日期即可,注意遇到20220123,判断为一个即可。
#include #define ll long long using namespace std; int ans=0; int d[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int main(){ ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); for(int i=1;i for(int j=1;j int date[]={2,i/10,i%10,j/10,j%10}; for(int k=0;k if(date[k]+1==date[k+1]&&date[k+1]+1==date[k+2]){ ans++; break; } } } } cout ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cinab>n; ll x=(5*a+2*b); ll y=(n/x);// 坐满了几周,7*y ll z=(n%x);// 还剩的题数 if(z if(z%a==0){ z=z/a; }else{ z=z/a+1; } cout if((z-5*a)%b==0){ z=(z-5*a)/b; }else{ z=(z-5*a)/b+1; } cout ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cinn; /* n=3 未剪 修剪后 位置 111 - 011 1 122 - 101 2 212 - 210 3 321 -> 301 2 412 -> 012 1 123 -> 103 2 214 -> 210 3 可以看到出现了循环情况,也就说从左向右和从右向左,的最大值是就是步长的2倍 */ for(int i=1;i cout ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cinn; // 从高位县向低位输入,避免造成位数不相同 cinma; for(ll i=ma;i=1;i--)cin>>a[i]; cin>>mb; for(ll i=mb;i>=1;i--)cin>>b[i]; /* x进制类比一下 十进制 比如 123 就是 1*10*10+2*10+3 那么x进制的: 每一位的进制:11 5 2 每一位的数字:10 4 1 那么这个x进制对应的十进制不就是:10*5*2+4*2+1 */ // A >= B // 进制: 11 5 2 // 10 4 0 10*5*2+4*2+0=108 // 1 2 0 1*5*2+2*2+0=14 108-14=94 // 所以说最小的数位上的进制应该就是a[i]和b[i]这个数位的值+1 // 也就是说正好要进位的时候能得到最小值 // 我们就使用p[i]来储存每个位上应该是什么进制 for(ll i=1;i p[i]=max((ll)2,max(a[i],b[i])+1); } p[0]=1; ll ans=0; for(int i=ma;i=1;i--){ // 为什么需要ans+a[i]+b[i]就能计算这个结果了? // 我们可以用两个十进制的数写一下,我们会发现ans其实就是最高位上没减完的数,然后加到下一位上了 ans=(ans+a[i]-b[i])*p[i-1]%mod; } cout ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cinn>>m>>k; memset(prefix,0,sizeof(prefix)); memset(mp,0,sizeof(mp)); for(int i=1;i cinmp[i][j]; prefix[i][j]=prefix[i-1][j]+prefix[i][j-1]+mp[i][j]-prefix[i-1][j-1]; } for(int x1=1;x1 for(int y1=1;y1 for(int x2=x1;x2 for(int y2=y1;y2 // s[x2][y2]-s[x2][y1-1]-s[x1-1][y2]+s[x1-1][y1-1] ll res=prefix[x2][y2]-prefix[x2][y1-1]-prefix[x1-1][y2]+prefix[x1-1][y1-1]; if(res int n; cin n; res[0] = 1; ll sum = 0; for(int i = 1, j = -2 ; i res[i] = res[i-1]; if(i = 2) res[i] += res[i-2], res[i] %= mod; if(j = 0) sum += res[j], sum %= mod; res[i] += sum 0,0,1,-1,1,-1,1,-1}; int dy[]={1,-1,0,0,1,-1,-1,1}; bool isnmp(int x,int y){ return x ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cinnm; for(int i=0;i for(int j=0;j if(mp[i][j]==1){ ans[i][j]=9; }else{ int rs=0; for(int k=0;k int nx=i+dx[k],ny=j+dy[k]; if(isnmp(nx,ny))continue; if(mp[nx][ny]==1){ rs++; } } ans[i][j]=rs; } } } for(int i=0;i for(int j=0;j if(n ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n,m;cinnm; memset(dp,-1,sizeof(dp)); dfs(2,n,m); cout//sqrt只适用于int,所以要自己写一个函数 ll ans=0,l=1,r=1e9; while(l ll mid=(l+r)1; if(mid*mid l=mid+1; }else{ r=mid; } } return l-1; } int main() { int n;cinn; ll x=0; for(int i=0;i int y=0; cinx; while(x1){ s[++y]=x; x=sqr(x/2+1); } ans+=y; for(int j=0,k=y;k;j++,k--)a[i][j]=s[k]; } // 检查相邻的数是否相等,若相等则操作次数减1 for(int j=0;j
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!


