了解题型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<
。。。。。。。。。。。。。。。。待续。。。。。。。。。。。。。。。。。。。。。。。