蓝桥杯赛前冲刺30天打卡题解(Day3)

1.年龄巧合

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小明和他的表弟一起去看电影,有人问他们的年龄。小明说:今年是我们的幸运年啊。我出生年份的四位数字加起来刚好是我的年龄。表弟的也是如此。已知今年是 20142014 年,并且,小明说的年龄指的是周岁。

请推断并填写出小明的出生年份。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

解析:

本题其实就是让你求2014年减去n年后,那一年的年份各个数字之和等于n,所以直接上代码

#include 
using namespace std;
int main()
{
  for(int i=1900;i<=2014;i++){
    for(int j=i+1;j<=2014;j++){
       int a=2014-i;
       int b=2014-j;
       int c=i;
       int d=j;
       int sum1=0,sum2=0;
       while(c){
         sum1+=c%10;
         c=c/10;
       }
       while(d){
         sum2+=d%10;
         d=d/10;
       }
       if(a==sum1&&b==sum2){
         cout<

 2.纸牌三角形

将每个数进行全排列来组成边,这里我们使用C++ STL库中的 next_permutation来进行全排列,

关于next_permutation的用法这里简单说明下,

一般使用的格式为

int a[];
do
{

}
while(next_permutation(a,a+n));
大概就是do里面放判断的条件,符合条件就ans++;

next_permutation()是按照字典序产生排列的,并且是从数组中当前的字典序开始依次增大直至到最大字典序,且该函数的返回值为bool,排序不了时会返回false        

因为题目说考虑旋转和镜像后相同的算一种,旋转的情况有3种,镜像的情况有2种,所以最后的答案还需要除以2*3=6。
 

#include 
#include 
using namespace std;
int main()
{
  int a[9]={1,2,3,4,5,6,7,8,9};
  int count=0;
  do
  {
    int sum1=a[0]+a[1]+a[2]+a[3];
    int sum2=a[0]+a[4]+a[5]+a[6];
    int sum3=a[3]+a[6]+a[7]+a[8];
    if(sum1==sum2 && sum1==sum3)
    {
      count++;
    }
  }while(next_permutation(a,a+9));
  cout<

你可能感兴趣的:(蓝桥杯,C++,蓝桥杯,职场和发展,c++,算法,c语言)