【蓝桥杯第十三届省赛B组】(部分详解)

九进制转十进制

#include <iostream>
#include<math.h>
using namespace std;
int main()
{
  cout << 2*pow(9,3)+0*pow(9,2)+2*pow(9,1)+2*pow(9,0) << endl;
  return 0;
}

顺子日期

#include <iostream>
using namespace std;
int main()
{
  // 请在此输入您的代码
  cout<<14;
  //01.20~01.29
  //11.23\10.12\12.30\12.31
  return 0;
  }

只比较后面四位就可以,如果代码算的话直接后面几位差值为1与求就ok,思考的时候写着写着就出答案了

修剪灌木

#include <iostream>
using namespace std;
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
       cout<<max(i-1,n-i)*2<<endl;
    }
  return 0;
}

在这里插入图片描述

X进制减法

#include <iostream>
using LL=long long;
using namespace std;
const LL MOD=1000000007;
const LL N=1e5+5;
int a[N],b[N];

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    int n;  cin>>n;//进制min 2  max n
    int ma; cin>>ma;//A的位数
    for(int i=ma-1;i>=0;i--) cin>>a[i]; //A每一位的十进制表示
    int mb;  cin>>mb;//B位数
    for(int j=mb-1;j>=0;j--)  cin>>b[j]; //B的每一位表示
    
     LL cnt=1,res=0,rgb;//cnt不能等于0
    for(int i=0;i<ma;i++)
    {
       
        rgb=max(max(a[i],b[i])+1,2);
        //进制越小差距越小,二进制最高位只能是0,十进制是9,所以数字加一取最小进制
        res=(res+(a[i]-b[i])*cnt)%MOD;
        cnt=(cnt*rgb)%MOD;
        //cnt放后面是因为 从0次方开始乘
        //多次取模为了防止越界
       
    } cout<<res%MOD;
    // 请在此输入您的代码
  return 0;
}

刷题统计

#include<bits/stdc++.h>
using LL=long long;
using namespace std;
int main()
{
    LL a,b,n;
    LL res=0;
    cin>>a>>b>>n;
    LL week=a*5+2*b;//90
    LL div=n/week;//1
    LL rem=n%week;//9
    if(rem> 5*a) 
    res = 5 + ceil(1.0*(rem-5*a)/b);
    else 
    res = ceil(1.0*rem/a);
	cout<<(int)res+ div*7;
    return 0;
}

ceil要转浮点再转整型才行(爆哭)

扫雷

#include <iostream>
#define cir(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int N=105;
int a[N][N]={0};
int main()
{
    int n,m;
    cin>>n>>m;
    cir(i,1,n)
    {
        cir(j,1,m)
        {
             cin>>a[i][j];
        }
    }
    cir(i,1,n)
    {
        cir(j,1,m)
        {
            if(a[i][j] == 1)
                cout << "9 ";
            else {
                int sum = 0;
                if (i > 1 && j > 1) sum += a[i-1][j-1];
                if (i > 1) sum += a[i-1][j];
                if (i > 1 && j < m) sum += a[i-1][j+1];
                if (j > 1) sum += a[i][j-1];
                if (j < m) sum += a[i][j+1];
                if (i < n && j > 1) sum += a[i+1][j-1];
                if (i < n) sum += a[i+1][j];
                if (i < n && j < m) sum += a[i+1][j+1];
                cout << sum << " ";
            }
        }
        cout << "\n";
    }

  return 0;
}

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值