【蓝桥杯】计蒜客2017模拟赛A习题整理

1.结果填空:折纸(long long)

输出的不老练,还是分开自己在加一下吧。

#include<iostream>
using namespace std;
int main(){
	long long sum = 1 ;
	int s = 0;
	for(int i = 1 ; i <= 20 ; i ++){
		sum *= 2;
	}
	for(int i = 1 ; i <= 20 ; i ++){
		s = s * 2 + 1;
	}
	printf("%lld\n" , sum);
	printf("%f" , s * 0.5);
	return 0;
}

 

2.结果填空:分饼干(暴力)

没啥说的,暴力就行了。

#include<iostream>
using namespace std;
int main(){
	for(int i = 20000 ; i <= 1000000000 ; i ++){
		if(i % 113 == 60 && i % 233 == 150 && i % 666 == 233){
			printf("%d" , i);
			break;
		}
	}
	return 0;
}

 

3.结果填空:小学生数学(暴力)

暴力。

#include<iostream>
#include<cstring>
using namespace std;
int sum = 0;
bool flag[10];
int main(){
	for(int a = 1 ; a <= 9 ; a ++)
	for(int b = 0 ; b <= 9 ; b ++)
	for(int c = 1 ; c <= 9 ; c ++)
	for(int d = 0 ; d <= 9 ; d ++)
	for(int e = 0 ; e <= 9 ; e ++)
	for(int f = 1 ; f <= 9 ; f ++)
	for(int g = 0 ; g <= 9 ; g ++)
	for(int h = 0 ; h <= 9 ; h ++)
	for(int i = 0 ; i <= 9 ; i ++)
	for(int j = 0 ; j <= 9 ; j ++)
	if((a * 10 + b) * (c * 100 + d * 10 + e) == f * 10000 + g * 1000 + h * 100 + i * 10 + j){
	if(a != b && a != c && a != d && a != e && a != f && a != g && a != h && a != i && a != j)
	if(b != c && b != d && b != e && b != f && b != g && b != h && b != i && b != j){
	if(c != d && c != e && c != f && c != g && c != h && c != i && c != j){
	if(d != e && d != f && d != g && d != h && d != i && d != j){
	if(e != f && e != g && e != h && e != i && e != j){
	if(f != g && f != h && f != i && f != j){
	if(g != h && g != i && g != j){
	if(h != i && h != j){
	if(i != j){
		sum ++;
	}
	}
	}
	}
	}
	}
	}
	}
	printf("%d" , sum);
	return 0;							
}

 

4.代码填空:圣诞树(找规律)

按照行来输出,必定数值是和i,j有关的,所以拉出来找规律就好了。

#include <stdio.h>

void christmas_tree(int n) {
    for (int i = 1; i <= n; ++i) { // 圣诞树的层数
        for (int j = 1; j <= n; ++j) { // 每一层小层
            int space_cnt =  16 - 2 * (i - 1) - j; // 填写必要代码
            int tree_cnt =  1 + (i - 1) * 4 + 2 * (j - 1); // 填写必要代码
            for (int k = 0; k < space_cnt; ++k) {
                putchar(' ');
            }
            for (int k = 0; k < tree_cnt; ++k) {
                putchar('*');
            }
            putchar('\n');
        }
    }
    for (int i = 1; i < 3 * (n - 1); ++i) {
        putchar(' ');
    }
    puts("***");
    for (int i = 1; i < 3 * (n - 1); ++i) {
        putchar(' ');
    }
    puts("***");
    for (int i = 1; i < 3 * (n - 1); ++i) {
        putchar(' ');
    }
    puts("***");
}

int main() {
    christmas_tree(6);
    return 0;
}

 

7.结果填空:简单的划分数(DFS)

【新】新的一种DFS模板,如果超过了边界就直接退出。以前从来没有这么干过。

这种题目如果只是一个填空题的话可以直接暴力解决,不必上动态规划了。

#include<iostream>
using namespace std;

int a = 0;

void dfs(int x , int s){
	if(s == 80){//达到目标的时候// 
		a ++;
		return ;
	}
	if(s > 80)//未达到目标的时候// 
		return ;
	for(int i = x ; i <= 80 ; i ++){//dfs// 
		dfs(i , s + i);
	}
}
int main(){
	dfs(1 , 0);
	printf("%d" , a);
	return 0;
}

 

8.程序设计:弹簧板(DP)

简单的dp问题,这个地方的dp是倒着弹回来的,所以不是上一个状态,需要按照下一个状态往前推。

#include<iostream>
using namespace std;
const int MAXN = 100005;

int a[MAXN] , dp[MAXN] = { 0 };//dp表示目前的状态的最大弹的数值//
int res = 0;

int main(){
    int n;	
    scanf("%d" , &n);
    for(int i = 1 ; i <= n ; i ++){
        scanf("%d" , &a[i]);
    }
    for(int i = n ; i >= 1 ; i --){
        dp[i] = dp[i + a[i]] + 1;
        res = max(dp[i] , res);
    }
    printf("%d" , res);
    return 0;
}

写不动了。。。。完了接着补

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值