前言
蓝桥杯已经过去一段时间了,经过几个月的努力也是拿到了省二,对于一个大一的萌新来说也是一个比较满意的成绩了。近几天在自学JAVA的时候看见狂神大大提的建议,于是也想自己来写一下。
也对前段时间的比赛进行一下总结。
题目
第一题
这题我是直接写了一段快排,也算是一到简单的签到题
#include <stdio.h>
#include <string.h>
void fun(char *s,int left,int right);
int main()
{
char s[]="WHERETHEREISAWILLTHEREISAWAY";
fun(s,0,strlen(s));
printf("%s",s);
return 0;
}
void fun(char *s,int left,int right)
{
if(left<right)
{
int i=left;
int j=right-1;
int t=s[i];
while(i<j)
{
while(i<j&&t<s[j])
{
j--;
}
if(i<j)
{
s[i++]=s[j];
}
while(i<j&&t>s[i])
{
i++;
}
if(i<j)
s[j--]=s[i];
}
s[i]=t;
fun(s,left,i);
fun(s,i+1,right);
}
}
第二题
这题我没有做出来,刚开始是直接想用暴力算出来的,后来发现计算的时间太长了于是便改了一下代码由于时间原因没有仔细查错,草草便交了。
附上错误代码,有没有大佬可以指出一下错误。
#include <stdio.h>
int pd_year(int year,int *ans);
int pd_md(int *ans,int mon,int day);
int main()
{
int num=0;
int ans[2];
int year,mon,day,t,m;
int s[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
for(year=1;year<=9999;year++)
{
if(pd_year(year,ans))
{
if((year%4==0&&year%100!=0)||year&400==0)
s[2]=29;
else s[2]=28;
for(mon=1;mon<=12;mon++)
{
for(day=1;day<=s[mon];day++)
{
if(pd_md(ans,mon,day))
{
for(t=1;t<=24;t++)
{
for(m=0;m<=59;m++)
{
if(pd_md(ans,t,m))
{
num++;
printf("%04d %02d %02d %02d %02d\n",year,mon,day,t,m);
}
}
}
}
}
}
}
}
printf("%d",num);
}
int pd_year(int year,int *ans)
{
int flag[10]={0};
int i;
for(i=0;i<4;i++)
{
flag[year%10]++;
year=year/10;
}
int a=0,b=0;
for(i=0;i<10;i++)
{
if(flag[i]==3) {
a=3,ans[0]=i;
}
if(flag[i==1]) {
b=1;ans[1]=i;
}
}
if(a==3&&b==1) return 1;
else return 0;
}
int pd_md(int *ans,int mon,int day)
{
int flag[10]={0};
int i;
for(i=0;i<2;i++)
{
flag[mon%10]++;
mon=mon/10;
}
for(i=0;i<2;i++)
{
flag[day%10]++;
day=day/10;
}
if(flag[ans[0]]==3&&flag[ans[1]]==1) return 1;
else return 0;
}
第三题
这题也是一道签到题,没什么好说的,直接附上代码。
#include <stdio.h>
int main()
{
char s[10];
scanf("%s",s);
int num[10][2]={{1189,841},{841,594},{594,420},{420,297},{297,210},{210,148},{148,105},{105,74},{74,52}};
int a=s[1]-48;
printf("%d\n",num[a][0]);
printf("%d",num[a][1]);
return 0;
}
第四题
第四题没什么思路,于是暴力一波骗分。希望有大佬提一下思路。
#include <stdio.h>
int main()
{
long n,i,j;
long long sum=0;
scanf("%ld",&n);
long s[n];
for(i=0;i<n;i++)
{
scanf("%ld",&s[i]);
}
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
sum=sum+(s[i]*s[j]);
}
}
printf("%lld",sum);
return 0;
}
第五题
这题我是运用了结构体和快排,大致思路是先将数据存在结构体数组里,然后先根据数的大小对结构体进行排序,然后对于排完序的结构体中数相同的区域根据数位进行排序。
代码如下
#include <stdio.h>
typedef struct demo{
long num;
long sum;
}demo;
int fun1(long n);
void sqt1(demo *s,long left,long right);
void sqt2(demo *s,long left,long right);
int main()
{
long n,t,i,j;
scanf("%ld",&n);
scanf("%ld",&t);
struct demo s[n];
for(i=0;i<n;i++)
{
s[i].num=i+1;
s[i].sum=fun1(i+1);
}
sqt1(s,0,n);
for(i=0;i<n;)
{
int left=i;
for(j=i;j<n;j++)
{
if(s[j].sum==s[j+1].sum)
{
continue;
}
else{
sqt2(s,i,j+1);
i=j+1;
}
}
}
printf("%ld",s[t-1].num);
return 0;
}
int fun1(long n)
{
long sum=0;
while(n)
{
sum=sum+n%10;
n=n/10;
}
return sum;
}
void sqt1(demo *s,long left,long right)
{
if(left<right)
{
int i=left;
int j=right-1;
demo t=s[i];
while(i<j)
{
while(i<j&&t.sum<s[j].sum)
j--;
if(i<j) s[i++]=s[j];
while(i<j&&t.sum>s[i].sum)
i++;
if(i<j) s[j--]=s[i];
}
s[i]=t;
sqt1(s,left,i);
sqt1(s,i+1,right);
}
}
void sqt2(demo *s,long left,long right)
{
if(left<right)
{
int i=left;
int j=right-1;
demo t=s[i];
while(i<j)
{
while(i<j&&t.num<s[j].num)
j--;
if(i<j) s[i++]=s[j];
while(i<j&&t.num>s[i].num)
i++;
if(i<j) s[j--]=s[i];
}
s[i]=t;
sqt2(s,left,i);
sqt2(s,i+1,right);
}
}
第六题
这题我也是暴力骗分。 =。=
#include <stdio.h>
int fun(long *s,long left,long right,long x);
int main()
{
long n,m,x,i,j;
scanf("%ld %ld %ld",&n,&m,&x);
long s[n];
for(i=0;i<n;i++)
{
scanf("%d",&s[i]);
}
int l,r;
for(i=0;i<m;i++)
{
scanf("%d %d",&l,&r);
if(fun(s,l,r,x)) printf("yes\n");
else printf("no\n");
}
return 0;
}
int fun(long *s,long left,long right,long x)
{
int i,j;
for(i=left-1;i<right-1;i++)
{
for(j=i+1;j<right;j++)
{
if((s[i]^s[j])==x)
{
return 1;
}
}
}
return 0;
}
其他题目
后面一些题目大多是G了,也不会暴力去骗,所以就不放代码了。
第七题
第八题
第九题
第十题
总结
原本以为只可以混给省三都不一定可以,没想到竟然有省二,完全是意外之喜。也希望我能够在这条路可以一直走下去。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!