1.输入一个无符号整数x,输出x的二进制表示中1的个数.
输入:
  76584
输出:
  7

水题:数据应该也不大,long long 也能过

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<vector>
#include<set>
#include<map>
#include<cmath>typedef long long ll;
using namespace std;
int main()
{unsigned long long  n;cin>>n;int s=0;while(n){if(n%2==1){s++;}n/=2;} cout<<s<<endl;return 0;} 

 2.猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第十天早上想在吃时就只剩下一个桃子了。求第一天共摘了多少桃子。
  (下面的不是正确答案)
输出:
  8

逆向递推

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<vector>
#include<set>
#include<map>
#include<cmath>typedef long long ll;
using namespace std;
long long  a[15];
int main()
{a[10]=1;for(int t=9;t>=1;t--){a[t]=(a[t+1]+1)*2;}cout<<a[1]<<endl;return 0;} 

3.  计算一个无符号整数的阿尔法乘积。对于一个无符号整数x来说,它的阿尔法乘积是这样来计算的:如果x是一个个位数,那么它的阿尔法乘积就是它本身;否则的话,x的阿尔法乘积就等于它的各位非0的数字相乘所得到的那个整数的阿尔法乘积。例如,4018224312的阿尔法乘积等于8,它是经过以下的几个步骤计算出来的:
  4018224312à4*1*8*2*2*4*3*1*2à3072
  3072à3*7*2à42
  42à4*2à8
输入:
  4018224312
输出:
  8

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<vector>
#include<set>
#include<map>
#include<cmath>typedef long long ll;
using namespace std;
int main()
{unsigned long long n;cin>>n;while(n/10){unsigned long long k=n;n=1;while(k){if(k%10){n*=(k%10);   }   k/=10;}}cout<<n<<endl;return 0;} 

下一题没写,看着有点麻烦,应该不是很难

 5. 数组A中共有n个元素,初始全为0。你可以对数组进行两种操作:1、将数组中的一个元素加1;2、将数组中所有元素乘2。求将数组A从初始状态变为目标状态B所需要的最少操作数。

输入格式

  第一行一个正整数n表示数组中元素的个数

  第二行n个正整数表示目标状态B中的元素

输出格式

  输出一行表示最少操作数

样例输入

2

7 8

样例输出

7

数据规模和约定

  n<=50,B[i]<=1000

逆向思维

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<vector>
#include<set>
#include<map>
#include<cmath>typedef long long ll;
using namespace std;
int a[55];
int main()
{int n;cin>>n;for(int t=0;t<n;t++){scanf("%d",&a[t]);}int flag=0;ll s=0;while(flag==0){int flag1=0;for(int t=0;t<n;t++){if(a[t]%2==1){a[t]--;s++;flag1=1;}}if(flag1==0){for(int t=0;t<n;t++){a[t]/=2;}s++;}int cnt=0;for(int t=0;t<n;t++){if(a[t]==0){cnt++;}}if(cnt==n){flag=1;}}cout<<s<<endl;return 0;
}

  6.Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的。例如,Unclear和Nuclear、Rimon和MinOR都是Anagrams。编写一个程序,输入两个单词(只包含英文字母),然后判断一下,这两个单词是否是Anagrams。每一个单词的长度不会超过80个字符,而且是大小写无关的。
  Input:长度不超过80个字符的两个单词,用空格隔开,不考虑字母大小写 (大小写无关)
  Output: yes或者no
输入:
  Rimon MinOR
输出:
  yes

一眼题不解释

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<vector>
#include<set>
#include<map>
#include<cmath>typedef long long ll;
using namespace std;
char str1[85],str2[85];
int vis1[100];
int vis2[100];
int main()
{scanf("%s",str1);scanf("%s",str2);int len1=strlen(str1);int len2=strlen(str2);for(int t=0;t<len1;t++){if(str1[t]>='A'&&str1[t]<='Z'){str1[t]=tolower(str1[t]);}}for(int t=0;t<len2;t++){if(str2[t]>='A'&&str2[t]<='Z'){str2[t]=tolower(str2[t]);}}for(int t=0;t<len1;t++){vis1[str1[t]-'a']++;}for(int t=0;t<len2;t++){vis2[str2[t]-'a']++;}int flag=1;for(int t=0;t<26;t++){if(vis1[t]!=vis2[t]){flag=0;} }if(flag){cout<<"yes"<<endl;}else{cout<<"no"<<endl;}return 0;
}

 7.输入一个正整数n,输出n!的值。
  其中n!=1*2*3*…*n

算法描述

  n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数aA[0]表示a的个位,A[1]表示a的十位,依次类推。
  将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位。
  首先将a设为1,然后乘2,乘3,当乘到n时,即得到了n!的值。

输入格式

  输入包含一个正整数nn<=1000。

输出格式

  输出n!的准确值。

样例输入

10

样例输出

3628800

高精度

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define LL long longusing namespace std;
/*
* 完全大数模板
* 输出cin>>a
* 输出a.print();
* 注意这个输入不能自动去掉前导0的,可以先读入到char数组,去掉前导0,再用构造函数。
*/
#define MAXN 9999
#define MAXSIZE 1010
#define DLEN 4
class BigNum
{
private:int a[5000]; //可以控制大数的位数int len;
public:BigNum() {len=1;    //构造函数memset(a,0,sizeof(a));}BigNum(const int); //将一个int类型的变量转化成大数BigNum(const char*); //将一个字符串类型的变量转化为大数BigNum(const BigNum &); //拷贝构造函数BigNum &operator=(const BigNum &); //重载赋值运算符,大数之间进行赋值运算friend istream& operator>>(istream&,BigNum&); //重载输入运算符friend ostream& operator<<(ostream&,BigNum&); //重载输出运算符BigNum operator+(const BigNum &)const; //重载加法运算符,两个大数之间的相加运算BigNum operator-(const BigNum &)const; //重载减法运算符,两个大数之间的相减运算BigNum operator*(const BigNum &)const; //重载乘法运算符,两个大数之间的相乘运算BigNum operator/(const int &)const; //重载除法运算符,大数对一个整数进行相除运算BigNum operator^(const int &)const; //大数的n次方运算int operator%(const int &)const; //大数对一个int类型的变量进行取模运算bool operator>(const BigNum &T)const; //大数和另一个大数的大小比较bool operator>(const int &t)const; //大数和一个int类型的变量的大小比较void print(); //输出大数
};
BigNum::BigNum(const int b) //将一个int类型的变量转化为大数
{int c,d=b;len=0;memset(a,0,sizeof(a));while(d>MAXN) {c=d-(d/(MAXN+1))*(MAXN+1);d=d/(MAXN+1);a[len++]=c;}a[len++]=d;
}
BigNum::BigNum(const char *s) //将一个字符串类型的变量转化为大数
{int t,k,index,L,i;memset(a,0,sizeof(a));L=strlen(s);len=L/DLEN;if(L%DLEN)len++;index=0;for(i=L-1; i>=0; i-=DLEN) {t=0;k=i-DLEN+1;if(k<0)k=0;for(int j=k; j<=i; j++)t=t*10+s[j]-'0';a[index++]=t;}
}
BigNum::BigNum(const BigNum &T):len(T.len) //拷贝构造函数
{int i;memset(a,0,sizeof(a));for(i=0; i<len; i++)a[i]=T.a[i];
}
BigNum & BigNum::operator=(const BigNum &n) //重载赋值运算符,大数之间赋值运算
{int i;len=n.len;memset(a,0,sizeof(a));for(i=0; i<len; i++)a[i]=n.a[i];return *this;
}
istream& operator>>(istream &in,BigNum &b)
{char ch[MAXSIZE*4];int i=-1;in>>ch;int L=strlen(ch);int count=0,sum=0;for(i=L-1; i>=0;) {sum=0;int t=1;for(int j=0; j<4&&i>=0; j++,i--,t*=10) {sum+=(ch[i]-'0')*t;}b.a[count]=sum;count++;}b.len=count++;return in;
}
ostream& operator<<(ostream& out,BigNum& b) //重载输出运算符
{int i;cout<<b.a[b.len-1];for(i=b.len-2; i>=0; i--) {printf("%04d",b.a[i]);}return out;
}
BigNum BigNum::operator+(const BigNum &T)const //两个大数之间的相加运算
{BigNum t(*this);int i,big;big=T.len>len?T.len:len;for(i=0; i<big; i++) {t.a[i]+=T.a[i];if(t.a[i]>MAXN) {t.a[i+1]++;t.a[i]-=MAXN+1;}}if(t.a[big]!=0)t.len=big+1;else t.len=big;return t;
}
BigNum BigNum::operator-(const BigNum &T)const //两个大数之间的相减运算
{int i,j,big;bool flag;BigNum t1,t2;if(*this>T) {t1=*this;t2=T;flag=0;} else {t1=T;t2=*this;flag=1;}big=t1.len;for(i=0; i<big; i++) {if(t1.a[i]<t2.a[i]) {j=i+1;while(t1.a[j]==0)j++;t1.a[j--]--;while(j>i)t1.a[j--]+=MAXN;t1.a[i]+=MAXN+1-t2.a[i];} else t1.a[i]-=t2.a[i];}t1.len=big;while(t1.a[t1.len-1]==0 && t1.len>1) {t1.len--;big--;}if(flag)t1.a[big-1]=0-t1.a[big-1];return t1;
}
BigNum BigNum::operator*(const BigNum &T)const //两个大数之间的相乘
{BigNum ret;int i,j,up;int temp,temp1;for(i=0; i<len; i++) {up=0;for(j=0; j<T.len; j++) {temp=a[i]*T.a[j]+ret.a[i+j]+up;if(temp>MAXN) {temp1=temp-temp/(MAXN+1)*(MAXN+1);up=temp/(MAXN+1);ret.a[i+j]=temp1;} else {up=0;ret.a[i+j]=temp;}}if(up!=0)ret.a[i+j]=up;}ret.len=i+j;while(ret.a[ret.len-1]==0 && ret.len>1)ret.len--;return ret;
}
BigNum BigNum::operator/(const int &b)const //大数对一个整数进行相除运算
{BigNum ret;int i,down=0;for(i=len-1; i>=0; i--) {ret.a[i]=(a[i]+down*(MAXN+1))/b;down=a[i]+down*(MAXN+1)-ret.a[i]*b;}ret.len=len;while(ret.a[ret.len-1]==0 && ret.len>1)ret.len--;return ret;
}
int BigNum::operator%(const int &b)const //大数对一个 int类型的变量进行取模
{int i,d=0;for(i=len-1; i>=0; i--)d=((d*(MAXN+1))%b+a[i])%b;return d;
}
BigNum BigNum::operator^(const int &n)const //大数的n次方运算
{BigNum t,ret(1);int i;if(n<0)exit(-1);if(n==0)return 1;if(n==1)return *this;int m=n;while(m>1) {t=*this;for(i=1; (i<<1)<=m; i<<=1)t=t*t;m-=i;ret=ret*t;if(m==1)ret=ret*(*this);}return ret;
}
bool BigNum::operator>(const BigNum &T)const //大数和另一个大数的大小比较
{int ln;if(len>T.len)return true;else if(len==T.len) {ln=len-1;while(a[ln]==T.a[ln]&&ln>=0)ln--;if(ln>=0 && a[ln]>T.a[ln])return true;elsereturn false;} elsereturn false;
}
bool BigNum::operator>(const int &t)const //大数和一个int类型的变量的大小比较
{BigNum b(t);return *this>b;
}
void BigNum::print() //输出大数
{int i;printf("%d",a[len-1]);for(i=len-2; i>=0; i--)printf("%04d",a[i]);
//    printf("\n");
}int main()
{BigNum a;int n;cin>>n;a="1";int t;for(t=1;t<=n;t++){BigNum s=t;a=a*s;}a.print();return 0;
}

8.如果有人认为吃东西只需要嘴巴,那就错了。
  都知道舌头有这么一个特性,“由简入奢易,由奢如简难”(据好事者考究,此规律也适合许多其他情况)。具体而言,如果是甜食,当你吃的食物不如前面刚吃过的东西甜,就很不爽了。
  大宝是一个聪明的美食家,当然深谙此道。一次他来到某小吃一条街,准备从街的一头吃到另一头。为了吃得爽,他大费周章,得到了各种食物的“美味度”。他拒绝不爽的经历,不走回头路而且还要爽歪歪(爽的次数尽量多)。

输入格式

  两行数据。
  第一行为一个整数n,表示小吃街上小吃的数量
  第二行为n个整数,分别表示n种食物的“美味度”

输出格式

  一个整数,表示吃得爽的次数

样例输入

10
3 18 7 14 10 12 23 41 16 24

样例输出

6

数据规模和约定

  美味度为0到100的整数
  n<1000

最长上升子序列的稍微不同,不必严格大于,可以等于

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<vector>
#include<set>
#include<map>
#include<cmath>typedef long long ll;
using namespace std;
int a[1005],dp[1005];
int n,ans=-999;
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++) {scanf("%d",&a[i]);dp[i]=1;}for(int i=1;i<=n;i++)for(int j=1;j<i;j++)if(a[j]<=a[i]) dp[i]=max(dp[i],dp[j]+1);for(int i=1;i<=n;i++) ans=max(ans,dp[i]);printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/Staceyacm/p/10781792.html

蓝桥训练1-3,5-8题解(自己写的,过了蓝桥官网的数据)相关推荐

  1. 蓝桥杯2012省赛 简单题解 c++

    写在前面:肝了一晚上方舟,我终于想起来搞博客了(陨星新皮肤真好看 嘿嘿 嘿嘿)..退役了两次的老咸鱼终于又回来了,虽然很想就这样一直咸鱼下去,但是过去的种种遗憾一直膈应着我.我知道我过去做错过许多事, ...

  2. [蓝桥杯]荒岛探测python3满分题解

    [蓝桥杯]荒岛探测python3满分题解 文章目录 [蓝桥杯]荒岛探测python3满分题解 前言 一.思路 二.代码 3. 总结 前言 小白一枚,最近在准备蓝桥杯记录一下满分题解的题目 一.思路 获 ...

  3. 第十二届蓝桥杯国赛真题+题解 Python

    文章目录 写在前面 试题A:带宽 试题 B: 纯质数 试题C: 完全日期 试题D: 最小权值 试题 E: 大写 试题 F: 123 试题 G: 冰山 试题 H: 和与乘积 试题 I: 二进制问题 试题 ...

  4. 【蓝桥杯】【Python】【思特奇杯·云上蓝桥-算法集训营】第1周作业

    第一周作业(Python描述) 1.跑步训练 问题描述: 答案提交: 题解: 思路: 代码: 总结: 2.阶乘约数 问题描述: 答案提交: 题解: 思路: 代码: 总结: 3.出栈次序 问题描述: 答 ...

  5. AI:互联网程序设计竞赛之蓝桥杯大赛的简介、奖项设置、大赛内容以及蓝桥杯与ACM(ICPC)的四个维度对比之详细攻略

    AI:互联网程序设计竞赛之蓝桥杯大赛的简介.奖项设置.大赛内容以及蓝桥杯与ACM(ICPC)的四个维度对比之详细攻略 导读: 蓝桥杯属于互联网程序设计竞赛的一种,除了它之外,类似的比赛还有ICPC(A ...

  6. 蓝桥杯官网刷题记录python

    蓝桥杯官网刷题记录python 由于很多题都会在2020.2021.2022年省赛出现,有的在前面文章里做过的这里就不会再说了 一.空间 小蓝准备用 256MB 的内存空间开一个数组,数组的每个元素都 ...

  7. pytorch MNIST 手写数字识别 + 使用自己的测试集 + 数据增强后再训练

    文章目录 1. MNIST 手写数字识别 2. 聚焦数据集扩充后的模型训练 3. pytorch 手写数字识别基本实现 3.1完整代码及 MNIST 测试集测试结果 3.1.1代码 3.1.2 MNI ...

  8. 【蓝桥杯算法题】用java遍写税收计算

    [蓝桥杯算法题]用java遍写税收计算 题目:劳务报酬税收计算:输入 m ,输出税后收入.如果 m <=800,不扣税, 如果800< m <=4000.则 m 减去800后的金额扣 ...

  9. [3D检测系列-PV-RCNN] PV-RCNN论文详解、PV-RCNN代码复现、包含官网PV-RCNN预训练权重及报错问题

    [3D检测系列-PV-RCNN] PV-RCNN论文详解.PV-RCNN代码复现 一.论文详解 1.3D voxel CNN 2.体素到关键点场景编码 2.1.关键点抽样 2.2.体素抽象 3.VSA ...

最新文章

  1. Windows和Linux下通用的线程接口
  2. 控件开发团队已做了第一步,我们已经有了QQ群!(大家注意,现在群还没有搞掂,请先等等,真对不起。)...
  3. 解决Ubuntu14.04 下 E: Encountered a section with no Package: header 问题
  4. API网关Kong系列(二)部署
  5. SPF难以解决邮件伪造的现状以及方案
  6. java实现聊天室界面javafx_java 聊天室WeChat
  7. ThinkPHP中where()方法的使用
  8. 三角形和矩形傅里叶变换_信号与系统:第三章傅立叶变换2.ppt
  9. Linux 修改系统编码
  10. php 检测domain信息
  11. nth-child和蝉原则实现的奇妙随机效果(译)
  12. 五分钟快速入门 Spring Data JPA
  13. 机器学习-极大似然估计
  14. 记忆碎片---搭建php+apache+eclipse中的问题
  15. 乐视盒子UI 官方下载地址
  16. Excel作图-子母饼图绘制
  17. 隐马尔科夫模型 python 实现简单拼音输入法
  18. 主机名 域名 网站名 URL
  19. Sublime Text(轻量级的文本编辑类软件)
  20. 新氧“自律破圈” 医美新生态而立时

热门文章

  1. [翻译]Axure-Basic Interactions-原型设计工具Axure学习-第1.3节
  2. double,float,BigDecimal类型数值的操作
  3. 【转】解决wine中文乱码的问题
  4. java学习笔记:使用dom4j解析xml
  5. 问题:# mount –t ntfs /dev/sdb1 /mnt/ 解决办法
  6. 如何禁用Visual Studio 2013的Browser Link功能
  7. memcpy的使用方法总结
  8. java实现选择排序
  9. 关于php socket客户端连接java socket服务器端,出现连接中断的问题。
  10. Nokia BH-700及三星wep250这两款蓝牙耳机和电脑配对的方法