倒计时82天

了解题型1.

蓝桥杯2022

1.蓝桥杯2022年第十三届省赛真题-刷题统计 - C语言网 (dotcpp.com)

#include
using namespace std;
#define int long long
void solve()
{
    int a,b,n;
    cin>>a>>b>>n;
    int sum1=5*a+2*b;
    int cn=n/sum1;//完整一周个数
    n-=cn*sum1;
    cn*=7;
    if(n==0)
    {
        cout<

2.原本这样写,不知道为什么,就啊啊啊啊啊啊啊啊啊,找了1h,最后才3‘

#include
using namespace std;
#define int long long
void solve()
{
    /*
    1:1
    2:2  2
    3:4  2  4
    4:6  4  4  6
    5:8  6  4  6  8
    */
    int n;
    cin>>n;
    if(n==1)cout<<1;
    else if(n==2)cout<<2<

要疯了/:、:?

之后看题解:才发现!!!!格式错了5555555555555555555555555/::?虽然格式改回来之后也就16‘(5555555555555555555555555

题解代码:

#include
using namespace std;
#define int long long
const int N=1e5+3;
int a[N];
void solve()
{
    /*
    1:1
    2:2  2
    3:4  2  4
    4:6  4  4  6
    5:8  6  4  6  8
    */
    int n;
    cin>>n;
    for(int i=1;i<=n/2;i++)
    {
        a[i]=2*(n-i);
    }
    if(n&1)a[(n+1)>>1]=n-1;
    for(int i=1;i<=n/2;i++)cout<=1;i--)cout<

3.

#include
using namespace std;
#define int long long
const int N=1e6+3;
const int mod=1000000007;
int a[N],b[N];
void solve()
{
    int n,ma,mb,res=0;
    cin>>n>>ma;
    for(int i=ma;i>0;i--)cin>>a[i];
    cin>>mb;
    for(int i=mb;i>0;i--)cin>>b[i];
    for(int i=ma;i>=2;i--){int p=a[i-1]+1;int q=b[i-1]+1;int r=2;res=((res+a[i]-b[i])*max({p,q,r}))%mod;}
    res+=a[1]-b[1];
    cout<

人麻了。。。。。。。。。。一会再学/’:?

--------------------------------------------------------------------------------------------------------------------------------

3.理解:321(题意:百位是8进制,十位是10进制,个位是2进制):3*(10*2)+ 2*(2)+ 1*1;

最低位 2 进制,第二数位 5 进制,第三数位 11 进制:

                                                   [10 4 0   -     1 2 0]----->5*2*(10-1)+2*(4-2)+1*(0-0);

由此,可以先用数组把ma,mb存一下,之后,因为要求res的最大值+进制min是2,所以求a,b数组中前一位与2比较后的max即可。

4.

#include 
using namespace std;
#define int long long
const int N =510;
const int inf = 0x3f3f3f3f;
int a[N][N],b[N][N];
void solve()
{
	int n,m,k,cn=0;
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++)
	{
	    for(int j=1;j<=m;j++)
	    {
	        cin>>a[i][j];
	        b[i][j]=b[i][j-1]+a[i][j];
	        //如第一行:a[1][]:1 2 3则b[1][]:1,1+2,1+2+3
	    }
	}
	for(int j1=1;j1<=m;j1++)//列
	{
	    for(int j2=j1;j2<=m;j2++)//列
	    {
	        int j=1;
	        int sum=b[1][j2]-b[1][j1-1];
	        for(int i=1;i<=n;i++)
	        {
	            while(j<=n&&sum<=k)
	            {
	                j++;
	                sum+=b[j][j2]-b[j][j1-1];
	            }
	            cn+=j-i;
	            sum-=b[i][j2]-b[i][j1-1];
	        }
	    }
	}
	cout<

5.

#include 
using namespace std;
#define int long long
const int mod=1000000007;
const int N=10000005;
const int inf = 0x3f3f3f3f;
int a[N];
void solve()
{
    int n;
    cin>>n;
    a[1]=1,a[2]=2,a[3]=5;
    //(1)找规律,(2)当为3的时候,看图可知:l的有2种(三个都竖着,1个竖着和2个横着),L的有1种
    //并且L的时候必须为3的倍数
    for(int i=4;i<=n;i++)a[i]=(a[i-1]*2%mod+a[i-3]%mod)%mod;
    cout<

  。。。。。。。。。。。。。。。。待续。。。。。。。。。。。。。。。。。。。。。。。      

你可能感兴趣的:(c++)