C:十一届蓝桥杯大赛软件类省赛第二场 C/C++ 大学 B 组 待完成

1;在这里插入图片描述
暴力计数,结果为:624.

#include<stdio.h>


int main(){


	int count2=0,i;
	for(i=1; i<=2020;i++){
		if(i%10==2)
			count2++;
		if((i%100)/10==2)
			count2++;
		if((i%1000)/100==2)
			count2++;
		if(i/1000 ==2)
			count2++;

	
	}

	printf("%d\n",count2);




	return 0;

}//624

2:
在这里插入图片描述
方法:暴力法:分子到分母依次遍历(注意分情况,不然容易出错)。答案为:2481215.(既约分数其实可以初步分为:奇/偶,奇/奇两种情况。偶数一直除2后仍为奇数。进而化为奇/奇的情况进行判断。
暴力算法思路:
i,j存储分子分母,num保存数量。
f2,f1分别表示较大较小值。
i=1,2分开讨论。
i>=3时:
1分子分母为倍数关系。不是。
2:从2开始遍历,到f1结束。存在一个数位公共因数,则不是。
1,2都不有跳出,则当前i,j是。num++.

#include<stdio.h>
int num=0;
#define N 2020

int main(){
	int i,j,k,f1,f2,jn=1;
	for(i=1;i<=N;i++)//分子1-N
	{
		if(i==1)
			{
				num=N;;
				continue;
			}

		for(j=1;j<=N;j++)
		{
			if(j==1)
			{
				num++;
		//		printf("jnum is %d\n",num);
				continue;
			}
			

			//判断有无公共因数
			f1 = i<=j? i:j;
			f2 = i>=j? i:j;

			if(f1==2){//分子或分母中一个为2
				if(f2%2==0) continue;
				else {
					num++;
					continue;
				};
			}
			if(i==j || f2%f1==0) continue;//3/3|6的情况(分子分母为倍数关系)

			for(k=2; k<f1; k++)//f1>2才行
			{
				if(i%k==0 && j%k==0)
				{
					jn=0;//表明存在,使得ij不是
					break;
				}
			
			}
			if(jn==0){
				jn=1;
				continue;
			}
			else{
				num++;
		//		printf("end i,j,num is %d,%d,%d\n",i,j,num);
			}
			
		}
	//	printf("end i,j,num is %d,%d,%d\n",i,j,num);
		
	}
	
	printf("%d\n",num);






	return 0;

}

3:在这里插入图片描述
直接观察计算:(看成长方形)
m(n,n)=n*(2n-1)-(n-1).带入的761.
下面为模拟过程的代码:

/*
 * @Date: 2020-10-17 22:05:26
 * @LastEditTime: 2020-10-17 22:06:55
 * @Author's blog: blog.nuoyanli.com
 * @Description: Plum blossom from the bchter cold!
 */
#include <bits/stdc++.h>
using namespace std;
int mmp[50][50], id;
int main() {
  for (int i = 1; i <= 40; i++) {
    if (i & 1) {
      int idx = i, idy = 1;
      for (int j = 0; j < i; j++){
        mmp[idx - j][idy + j] = ++id;
      }
    } else {
      int idx = 1, idy = i;
      for (int j = 0; j < i; j++){
        mmp[idx + j][idy - j] = ++id;
      }
    }
  }
  cout << mmp[20][20] << endl;
  return 0;
}


这个原代码链接:ttps://blog.youkuaiyun.com/nuoyanli/article/details/109138714

4:跑步锻炼:
在这里插入图片描述
答案为:8879;
思路代码:这道理太简单了,就不写代码了。
思路:模拟过程:
注意:
1:闰年和 非闰年就2月不同。
2:注意开始和截止时间。
还是写下代码吧:

#include<stdio.h>
int num=0;//注意第一天
#define N 2020



int main(){
	
	int year=2000,mon=1,day=1;
	int weekday=6,bb=0;
	int monday[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};



	while(bb==0){//10.1号要跑。


		num++;//默认跑1
		if(weekday==1 || day==1){
			num++;
		}


		//判断是不是闰年
		if(year%400==0 ||(year%4==0&&year%100!=0) )
		{
			monday[2]=29;//is
		}
		else
			monday[2]=28;

		//周更替
		if(weekday<7)
		{
			weekday++;
		}
		else{
			weekday=1;
		
		}



		//日,月,年更替;
		if(day<monday[mon]){
			day++;
		}
		else{
			day=1;
			//	mon++;
			if(mon<12){
				mon++;
				
			}
				else{
					mon=1;
					year++;	
					printf("year is add %d\n",year);
				}	
			
			}

		


//		if(year==2000 && mon==1 && day==2)// 截止日期后一天
		if(year==2020 && mon==10 && day==2)// 10.1号要跑。
			bb=1;


	}//while


	printf("num is %d\n",num);//注意开始的1号




	return 0;

}

5:在这里插入图片描述
思路:2^7=128.直接排列组合。
计算亮灯数与对应不连同的计数:
0:1;(没有灯亮)
1:0;(亮一盏灯,一定连同。)
2:13;
3:17;
4:13;(等价余灭三个,不连同的计数。)
5:4;
6;0;
7;0;
总和为:48.故而结果为:128-48=80;

6:
在这里插入图片描述
注意四佘五入就行。很简单。

7:在这里插入图片描述

解决法:暴力遍历出所有回文,比所输入的大就行。

8:在这里插入图片描述
暴力算法,可以通过部分解。

9:在这里插入图片描述
首先:增加的平面数量n=1+新线所添加的交点。

10:
在这里插入图片描述
1;确定n个字符,能行成的最大逆序数。n(n-1)/2.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值