蓝桥杯集锦
基础练习 特殊回文数
网址:
#include
#include
#include
#include
using namespace std;
int main()
{int n;int x=0;int a[110];scanf("%d",&n);for(int i=0;i<=9;i++) //注意是从0开始,开始从1开始,WR了好多次for(int j=10;j<=99;j++)if((j/10+j)*2+i==n)a[x++]=(j*10+i)*100+j*10+j/10 ;for(int i=100;i<=999;i++)if((i/100+i0/10+i)*2==n)a[x++]=i*1000+i*100+i0/10*10+i/100 ;sort(a,a+x); for(int i=0;i
杨辉三角:
#include
#include
#include
#include
#include
#include
using namespace std;
int main()
{int a[35][35],n;memset(a,0,sizeof(a));a[0][1]=1;scanf("%d",&n);for(int i=1;i<=n;i++) {for(int j=1;j<=i;j++){a[i][j]=a[i-1][j-1]+a[i-1][j];cout<
查找整数网址:
#include
#include
#include
#include
using namespace std;
int main(){int x,n;scanf("%d",&n);vector v;//要查找的元素,类型要与vector<>类型一致for(int i=0;i::iterator iter=std::find(v.begin(),v.end(),x);//返回的是一个迭代器指针if(iter==v.end())cout<<-1;else //注意迭代器指针输出元素的方式和distance用法cout<< distance(v.begin(), iter)+1 ;return 0;
}
基础练习 字母图形:
#include
#include
#include
#include
#include
#include
using namespace std;
int main()
{
int m,n;
cin>>m>>n;
string str="";
for(int i=0;i
开始的时候理解错题意了,WR了好几次
48b81bf88dbae7749283bb8d6d510384
基础练习 01字串(这道题挺好的知识点)
#include
#include
#include
#include
#include
#include
using namespace std;
int main()
{for(int i=0;i<32;i++){char s[10]; itoa(i, s, 2); //转换成字符串,进制基数为2,i转化为 注意是整型和字符数组之间的转化 string str(s); //转化为string类型 int number = atoi(str.c_str());printf("d\n",number); //输出控制格式0代表空位补零,5代表限制为5位,如果小于五位,通过补零形式满足,超过五位则失去作用 }
return 0;
}
另解:开始的时候不知道字符串也能填充(填充其他字符现在还不清楚,但是填充0为如下)
#include
#include
#include
#include
#include
#include
using namespace std;
int main()
{for(int i=0;i<32;i++){char s[10]; itoa(i, s, 2); //转换成字符串,进制基数为2,i转化为 注意是整型和字符数组之间的转化 printf("s\n",s); }return 0;
}
算法训练 问题(大小写转化)
#include
#include
#include
#include
#include
#include
using namespace std;
int main()
{
char ch1[100],ch2[100];
cin>>ch1>>ch2;
int x;
if((x=strlen(ch1))!=strlen(ch2))
cout<<"N";
strlwr(ch1);//将大写转化为小写 网址:http://blog.csdn.net/u014665013/article/details/37994597
strlwr(ch2);
int a[30]={0},b[30]={0};
for(int i=0;i
算法训练 出现次数最多的整数
(我也是醉了,好像还有n=0这样的测试数据,这还WR,好好读题)
#include
#include
#include
#include
#include
#include
using namespace std;
int main()
{int n;cin>>n;int a,b,mark,count=1,temp=1;int x=n;if(x>0)cin>>a;n--;mark=a;while((n--)>0){cin>>b;if(a==b){temp++;if(temp>count){mark=b;count=temp;} }elsetemp=1;a=b; }if(x>0)cout<
算法训练 字串统计(含字符串的部分截取)
网址:
#include
#include
#include
#include
#include
#include
using namespace std;
int main()
{int n;cin>>n;string str,mark="";cin>>str;string temp[65];int len=str.length(),markcishu=0,tempcishu;for(int i=n;i<=len;i++){int j=0;for(j=0;j+i<=len;j++)//截取字串 j为起始位置, {temp[j] = str.substr(j,i);// cout<<"temp["<markcishu||(temp[x].length()>mark.length()&&tempcishu==markcishu)){//注意条件markcishu=tempcishu;mark=temp[x]; } } }cout<
算法训练 矩阵乘法
网址:
#include
#include
#include
#include
#include
#include
using namespace std;
int main()
{int n,m,s;cin>>m>>s>>n;int a[205][205], b[205][205],temp=0;for(int i=1;i<=m;i++)for(int j=1;j<=s;j++)scanf("%d",&a[i][j]);for(int i=1;i<=s;i++)for(int j=1;j<=n;j++)scanf("%d",&b[i][j]);for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){for(int x=1;x<=s;x++)temp=temp+a[i][x]*b[x][j];printf("%d ",temp);temp=0;} printf("\n");}
return 0;
}
算法训练 大小写转换网址:
#include
#include
#include
#include
#include
#include
using namespace std;
int main()
{string str;//cout<>str;int len = str.length();for(int i=0;i='A')str[i]=char(str[i]+32);elsestr[i]=str[i]-32;}cout<
算法训练 动态数组使用网址:
#include
#include
#include
#include
#include
#include
using namespace std;
int main()
{int n,sum=0;scanf("%d",&n);int * array=(int*)calloc(n,sizeof(int));for(int i=0;i>array[i];sum=sum+array[i];}cout<
算法训练 最小乘积(基本型)网址:
#include
#include
#include
#include
#include
#include
using namespace std;
bool cmp(int a,int b){
return a>b;
} int main()
{int n; scanf("%d",&n);for(int i=0;i>a[j];for(int j=0;j>b[j];sort(a,a+x);sort(b,b+x,cmp);for(int j=0;j
算法训练 Torry的困惑(基本型) 网址:
//前n项素数求积对50000取模
#include
#include
#include
#include
#include
#include
using namespace std;
#define N 1300000
bool isprm[N];
void isprime()
{int i,j,k=0;int s,e=sqrt( double(N) )+1; //sqrt是对于double数开平方memset(isprm,1,sizeof(isprm));//prm[k++]=2;isprm[0] = isprm[1] = 0;for(i=4 ;i < N; i=2+i)isprm[i]=0;for(i=3;i>n;isprime();int j=0;for(int i=0;j
算法训练 关联矩阵 网址:
//前n项素数求积对50000取模
#include
#include
#include
#include
#include
#include
using namespace std;
int main (){int m,n,a[105][1005]={0};cin>>m>>n;int x,y;for(int i=1;i<=n;i++){scanf("%d%d",&x,&y);a[y][i]=-1;a[x][i]=1;}for(int i=1;i<=m;i++){for(int j=1;j<=n;j++)cout<
算法训练 区间k大数查询
网址:
#include
#include
#include
#include
#include
#include
using namespace std;
int main()
{int n,a[1005],x,temp[1005],l,r,k;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]);scanf("%d",&x);for(int i=1;i<=x;i++){int count=0;scanf("%d%d%d",&l,&r,&k); for(int j=l;j<=r;j++){temp[count++]=a[j];// cout<
算法提高 6-17复数四则运算(写这样简单但是需要先总结对公式)
网址 :
#include
#include
#include
#include
#include
#include
using namespace std;
int main()
{
double x1,x2,y1,y2,y3,x3;
char ch;
cin>>x1>>y1>>ch>>x2>>y2;
if(ch=='+')x3=x1+x2,y3=y1+y2;
else if(ch=='-')
x3=x1-x2,y3=y1-y2;
else if(ch=='*')
x3=x1*x2-y1*y2,y3=x1*y2+y1*x2;
elseif(ch=='/')if(x2*x2+y2*y2==0){cout<<"error";return 0;}elsex3=(x1*x2+y1*y2)/(x2*x2+y2*y2),y3=(y1*x2-x1*y2)/(x2*x2+y2*y2);
else{
cout<<"error";
return 0;}
if(x3==0&&y3==0){
cout<<0;
return 0;
}
if(x3!=0)cout<0)
cout<<'+'<
算法提高 约数个数(不是完全循环,还是有点小技巧的)
网址:
#include
#include
#include
#include
#include
#include
using namespace std;
int main()
{int n;cin>>n;int count=0;for(int i=1;i<=sqrt(double(n));i++){if(n%i==0)count++; } if(sqrt(double(n))-int(sqrt(double(n)))==0)cout<<2*count-1;elsecout<<2*count;
return 0;
}
历届试题 分糖果 网址:
#include
#include
#include
#include
#include
#include
using namespace std;
int main (){int n,a[105],b[105];cin>>n;for(int i=0;i
历届试题 兰顿蚂蚁 网址:
#include
#include
#include
#include
#include
#include
using namespace std;
int main (){int n,m;bool a[105][105];cin>>m>>n;for(int i=0;i>ch>>find;for(int i=1;i<=find;i++){if(a[row][list]==1){a[row][list]=0;if(ch=='U'){ ch='R'; list++;}else if(ch=='R'){ ch='D'; row++; }else if(ch=='D'){ ch='L';list-- ;}else { ch='U';row--;}}else{a[row][list]=1;if(ch=='U'){ ch='L';list-- ;} else if(ch=='R'){ ch='U';row--;} else if(ch=='D'){ ch='R'; list++;}else { ch='D'; row++; }}}cout<|