第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 A 组题解+个人总结

提示:此题解为本人自己解决,如有差错请大家多多指正。


太菜了,太菜了,写个文章提醒我的菜,感觉受到了打击。自己还是菜,写的还不够多,一堆都忘了。dfs也不会写了。

题解+总结

一、幸运数

1.试题

在这里插入图片描述

2.解法

可以暴力求解,数位为两位时,有11,22,33,44,55,66,77,88,99共9个幸运数。然后分别枚举(1000-9999,100000-999999,10000000~99999999)然后加上幸运数的条件算出每个数段的幸运数个数来,加起来就是答案。(我暴力还写错了,真是太菜了!!!痛苦,今年大一爆0,明年省一等我!!!)
更新一种做法统计1-9999有多少位数为多少的和

3.代码

解法一:

#include<iostream>
using namespace std;
int main()
{
 //数位为二:11,22,33,44,55,66,77,88,99:9种结果
  int a=0,b=0,c=0,d=9;
  for(int i=1000;i<=9999;i++)
  {
    if(i%10+i/10%10==i/100%10+i/1000%10)//个位+十位=百位+千位,下面依次类推
    a++;//数位为四:结果为615
  }cout<<a<<endl;
  for(int i=100000;i<=999999;i++)
  {
  if(i%10+i/10%10+i/100%10==i/1000%10+i/10000%10+i/100000%10)
     b++;
  }cout<<b<<endl;
  for(int i=10000000;i<=99999999;i++)
  {
  if(i%10+i/10%10+i/100%10+i/1000%10==i/10000%10+i/100000%10+i/1000000%10+i/10000000%10) 
  c++;
  }
  cout<<c<<endl;
  cout<<d+a+b+c;//9+615+50412+4379055=4430091
  return 0;
}

解法二:

#include <stdio.h>
int a[5][10000]={0};
void judge(int x)
{
  int sum=0,i=0;
  while(x>0){
    sum+=x%10;
    i++;
    x/=10;
  }
  a[i][sum]++;            
}
int main()
{
  int count=0;
  for(int i=1;i<=9999;i++)judge(i);               
  for(int i=1;i<=4;i++){
    for(int j=1;j<=9*i;j++){
      for(int k=1;k<=i;k++){
        count+=a[i][j]*a[k][j]; 
      }
    }
  }
  printf("%d\n",count);
  return 0;
}

二、有奖问答

三、平方差

四、更小的数

五、颜色平衡树后五道题还有一堆问题,我加油改正。大家有什么办法也提供提供。

六、买瓜

七、网络稳定性

八、异或和之和

九、像素放置

十、翻转硬币

总结

本次蓝桥杯让我深刻意识到了我的菜,上学期也没咋学,这学期听了一点y总的课,知识点知道了不少,但就是转化不成代码,真的很痛苦。接下来继续学习算法和数据结构,多做题,同时学一些框架,不能太痴迷于算法题了不然可能会断了自己的路,看个人水平吧还是,对于我来说是这样,然后看看学校的ICPC队能不能进去(进不去,,,),下周还有新生赛。。。。。。好羡慕厉害的学长和算法大佬们。。。。。。。。。。。。。。。。。。。。写完题解释然了,感觉前几道好简单还做错了。。。。。。。。。。。。。。。。。。。。。明年省一等我

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值