蓝桥杯

蓝桥杯【入门训练】

两盒软妹~` 提交于 2020-01-06 03:07:23
BEGIN-1 A+B问题 /* 入门训练:1 A+B问题 知识点:scanf()函数格式(第二个参数不要忘了 '&' 符号) */ #include <stdio.h> int main() { int a, b; scanf("%d%d", &a, &b); printf("%d", a+b); return 0; } BEGIN-2 序列求和 /* 入门训练:2 序列求和 */ #include <iostream> using namespace std; int main() { long long n,sum; cin>>n; sum=(n+1)*n/2; cout<<sum; return 0; } BEGIN-3 圆的面积 /* 入门训练:3 圆的面积 知识点:pow()函数定义,输入输出格式,强制转换 */ #include <stdio.h> #include <math.h> #define PI (atan(1.0)*4) int main(void) { unsigned int ra; double area, a; scanf("%d", &ra); area = PI * pow((double)(ra), 2.0); printf("%.7f", area); return 0; } BEGIN-4 Fibonaci数列 /* 入门训练:4

问题 1470: [蓝桥杯][基础练习VIP]时间转换

允我心安 提交于 2020-01-02 20:22:23
题目描述 给定一个以秒为单位的时间t,要求用 “< H> :< M> :< S> ”的格式来表示这个时间。< H> 表示时间,< M> 表示分钟, 而< S> 表示秒,它们都是整数且没有前导的“0”。例如,若t=0,则应输出是“0:0:0”;若t=3661,则输出“1:1:1”。 输入 输入只有一行,是一个整数t(0< =t< =86399)。 输出 输出只有一行,是以“< H> :< M> :< S> ”的格式所表示的时间,不包括引号。 样例输入 5436 样例输出 1:30:36 # include <iostream> # include <stdio.h> using namespace std ; int main ( ) { int t , h , m , s ; scanf ( "%d" , & t ) ; h = t / 3600 ; m = ( t - h * 3600 ) / 60 ; s = t - h * 3600 - m * 60 ; printf ( "%d:%d:%d" , h , m , s ) ; return 0 ; } 来源: CSDN 作者: Molise_lc 链接: https://blog.csdn.net/qq_41675812/article/details/103810214

蓝桥杯\"哪天返回\"

拥有回忆 提交于 2019-12-27 20:27:30
package com.lqb.four; /** * 标题:哪天返回 小明被不明势力劫持。后被扔到x星站再无问津。小明得知每天都有飞船飞往地球,但需要108元的船票,而他却身无分文。 他决定在x星战打工。好心的老板答应包食宿,第1天给他1元钱。 并且,以后的每一天都比前一天多2元钱,直到他有足够的钱买票。 请计算一下,小明在第几天就能凑够108元,返回地球。 要求提交的是一个整数,表示第几天。请不要提交任何多余的内容。 * @author 鑫 * */ public class NTFH { public static void main(String[] args) { //方法一 // int day = 0;//天数 // int money= 0;//钱 // int a= 0;//每天发的工资 // while (money<108) { // day += 1; // if(day==1) { // a += 1; // money += a; // }else { // a += 2; // money += a; // } // } // System.out.println(day); //方法二 int n = 0;//天数 int money = 0; while (money<108) { n++; money = (1+(1+(n-1)*2))*n/2;

蓝桥杯 搜索

倾然丶 夕夏残阳落幕 提交于 2019-12-27 07:59:45
完美正方形 如果一些边长互不相同的正方形,可以恰好拼出一个更大的正方形,则称其为完美正方形。 历史上,人们花了很久才找到了若干完美正方形。比如:如下边长的22个正方形 2 3 4 6 7 8 12 13 14 15 16 17 18 21 22 23 24 26 27 28 50 60 如【图1.png】那样组合,就是一种解法。此时, 紧贴上边沿的是:60 50 紧贴下边沿的是:26 28 17 21 18 22阶完美正方形一共有8种。下面的组合是另一种: 2 5 9 11 16 17 19 21 22 24 26 30 31 33 35 36 41 46 47 50 52 61 如果告诉你该方案紧贴着上边沿的是从左到右依次为:47 46 61, 你能计算出紧贴着下边沿的是哪几个正方形吗?        解题思路:       三个关键          当前位置能否填入          填入是否符合要求          填入结束条件 1 #include<iostream> 2 #include<cstring> 3 4 using namespace std; 5 6 7 const int maxn=154; 8 int Num[]={2,5,9,11,16,17,19,21,22,24,26,30,31,33,35,36,41,50,52}; 9 int mp[maxn

蓝桥杯 方格分割

限于喜欢 提交于 2019-12-27 07:59:07
蓝桥杯 方格分割 【题目描述 - Problem Description】 6x6的方格,沿着格子的边线剪开成两部分。 要求这两部分的形状完全相同。 如图:p1.png, p2.png, p3.png 就是可行的分割法。 试计算: 包括这3种分法在内,一共有多少种不同的分割方法。 注意:旋转对称的属于同一种分割法。 请提交该整数,不要填写任何多余的内容或说明文字。 【题解】   DFS暴力枚举,和之前的 剪邮票 一个套路。由于需要考虑旋转对称造成的重复,最后结果除4。   多注意剪枝,可以让代码快很多。 【最终结果】 509 【代码 C++】 1 #include <cstdio> 2 struct Point { 3 int y, x; 4 }pit[36]; 5 int map[10][10], stk[18], opt; 6 int sum(int y, int x) { 7 if (map[y][x] == 1) { 8 map[y][x] = 2; 9 return 1 + sum(y + 1, x) + sum(y - 1, x) + sum(y, x + 1) + sum(y, x - 1); 10 } 11 return 0; 12 } 13 void DFS(int now, int i) { 14 if (i < 18) { 15 while (++now <

算法-蓝桥杯习题(七)

我们两清 提交于 2019-12-25 18:36:44
蓝桥杯习题 蓝桥杯练习系统习题加答案更新新地址(已更新200左右习题) http://blog.csdn.net/rodestillfaraway 目录 算法训练(详见 算法-蓝桥杯习题(一)) Go 算法训练(详见 算法-蓝桥杯习题(二)) Go 算法提高(waiting...) 历届试题(详见 算法-蓝桥杯习题(六)) Go 历届试题(详见 算法-蓝桥杯习题(七)) Go 蓝桥杯练习系统评测数据 链接: http://pan.baidu.com/s/1mhophTQ 密码: m2pa 历届试题(PartC-14题) 1 /* 2 历届试题 回文数字 3 4 问题描述 5   观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。 6 7   本题要求你找到一些5位或6位的十进制数字。满足如下要求: 8   该数字的各个数位之和等于输入的整数。 9 输入格式 10   一个正整数 n (10<n<100), 表示要求满足的数位和。 11 输出格式 12   若干行,每行包含一个满足要求的5位或6位整数。 13   数字按从小到大的顺序排列。 14   如果没有满足条件的,输出:-1 15 样例输入 16 44 17 样例输出 18 99899 19 499994 20 589985 21 598895 22

蓝桥杯basic10

三世轮回 提交于 2019-12-24 02:04:07
问题描述   十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。   给出一个非负整数,将它表示成十六进制的形式。 输入格式   输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647 输出格式   输出这个整数的16进制表示 样例输入 30 样例输出 1E #include<iostream> #include <algorithm> using namespace std; string exchange(int n,int radix) { string s=""; do { int m = n % radix; if(m < 10) s += m + '0'; else s += m - 10 + 'A'; n /= radix; }while(n != 0); reverse(s.begin(),s.end()); return s; } int main() { int n; cin>>n; cout<<exchange(n,16); return 0; } 来源: CSDN 作者: 阿瓜瓜瓜

蓝桥杯basic11

江枫思渺然 提交于 2019-12-24 01:34:49
问题描述   从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。   注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。 样例输入 FFFF 样例输出 65535 //需注意八位十六进制转换为十进制之后int表示不了 #include<iostream> #include<math.h> #include<algorithm> using namespace std; int exchange16to10(char c) { int a; switch(c) { case 'A':a = 10;break; case 'B':a = 11;break; case 'C':a = 12;break; case 'D':a = 13;break; case 'E':a = 14;break; case 'F':a = 15;break; default :a = c - '0'; } return a; } int main() { long long n = 0; string s; cin>>s; reverse(s.begin(),s.end()); for(int i=0;i<s.length();i++) n += exchange16to10(s[i]) * pow(16,i); cout<<n; return 0; }

蓝桥杯 —— 基础练习 01字串

白昼怎懂夜的黑 提交于 2019-12-22 03:57:18
【问题描述】 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是: 00000 00001 00010 00011 00100 请按从小到大的顺序输出这32种01串。 【输入格式】 本试题没有输入。 【输出格式】 输出32行,按从小到大的顺序每行一个长度为5的01串。 【样例输出】 00000 00001 00010 00011 <以下部分省略> 【AC代码】 #include<iostream> #include<cmath> using namespace std; void re(int n, int a[]){ int t=0; while(n > 0){ a[t] = n%2; n /= 2; t++; } for(int i = 4; i >= 0; i--){ cout << a[i]; } } int main(){ for(int i = 0; i < 32; i++){ int a[10]={0}; re(i, a); cout << endl; } return 0; } 来源: CSDN 作者: heyley.. 链接: https://blog.csdn.net/weixin_43850619/article/details/103641172

蓝桥杯算法训练 二进制数数

风格不统一 提交于 2019-12-21 20:02:41
问题描述   给定L,R。统计[L,R]区间内的所有数在二进制下包含的“1”的个数之和。   如5的二进制为101,包含2个“1”。 输入格式   第一行包含2个数L,R 输出格式   一个数S,表示[L,R]区间内的所有数在二进制下包含的“1”的个数之和。 样例输入 2 3 样例输出 3 数据规模和约定   L<=R<=100000; 解题思路 :用函数算出一个数的二进制包含1的个数,再在区间循环叠加 # include <iostream> using namespace std ; int numOne ( int n ) ; int main ( ) { int a , b , i , rs = 0 ; cin >> a >> b ; for ( i = a ; i <= b ; i ++ ) { rs + = numOne ( i ) ; } cout << rs << endl ; return 0 ; } int numOne ( int n ) { int i , k = 0 ; //k为1的个数 i = n ; while ( i ) { if ( i % 2 == 1 ) k ++ ; i = i / 2 ; } return k ; } 来源: CSDN 作者: SuperAoye 链接: https://blog.csdn.net/weixin