蓝桥杯习题
目录
入门训练(详见 算法-蓝桥杯习题(1-1))Go
基础练习(详见 算法-蓝桥杯习题(2-1))Go
基础练习(详见 算法-蓝桥杯习题(2-2))Go
算法训练(详见 算法-蓝桥杯习题(3-1))Go
算法训练(详见 算法-蓝桥杯习题(3-2))Go
算法训练(详见 算法-蓝桥杯习题(3-3))Go
算法训练(详见 算法-蓝桥杯习题(3-4))Go
算法训练(详见 算法-蓝桥杯习题(3-5))Go
算法训练(详见 算法-蓝桥杯习题(3-6))Go
算法提高(详见 算法-蓝桥杯习题(4-1))Go
算法提高(详见 算法-蓝桥杯习题(4-2))Go
算法提高(详见 算法-蓝桥杯习题(4-3))Go
历届试题(详见 算法-蓝桥杯习题(5-1))Go
历届试题(详见 算法-蓝桥杯习题(5-2))Go
蓝桥杯练习系统评测数据
链接: https://pan.baidu.com/s/1brjjmwv
密码: iieq
10
/*
算法提高 多项式输出
*/
//多项式输出
#include<stdio.h>
int main()
{
int n,a[101],i;
scanf("%d",&n);
for(i=n;i>=0;i--)
scanf("%d",&a[i]);
for(i=n;i>=0;i--)
{
if(i==n) //指数为首位
{
//系数大于0且等于1
if(a[i]>0 && a[i]!=1)
printf("%dx^%d",a[i],i);
//系数大于0且等于1
if(a[i]>0 && a[i]==1)
printf("x^%d",i);
//系数小于0且不等于-1
if(a[i]<0 && a[i]!=-1)
printf("%dx^%d",a[i],i);
//系数小于0且等于-1
if(a[i]<0 && a[i]==-1)
printf("-x^%d",i);
}
else if(i>1 && i!=n) //指数不为0 且不为首位
{
//系数大于0且不等于1
if(a[i]>0 && a[i]!=1)
printf("+%dx^%d",a[i],i);
//系数大于0同时等于1
if (a[i]>0 && a[i]==1)
printf("+x^%d",i);
//系数小于0且不等于-1
if(a[i]<0 && a[i]!=-1)
printf("%dx^%d",a[i],i);
//系数小于0同时等于-1
if(a[i]<0 && a[i]==-1)
printf("-x^%d",i);
}
else if(i==1)
{
//系数大于0且不等于1
if(a[i]>0 && a[i]!=1)
printf("+%dx",a[i]);
//系数大于0同时等于1
if (a[i]>0 && a[i]==1)
printf("+x");
//系数小于0且不等于-1
if(a[i]<0 && a[i]!=-1)
printf("%dx",a[i]);
//系数小于0同时等于-1
if(a[i]<0 && a[i]==-1)
printf("-x");
}
else //指数为0
{
if(a[i]>0)
printf("+%d\n",a[0]);
else if(a[i]<0)
printf("%d\n",a[0]);
}
}
printf("\n");
return 0;
}
/*
算法提高 矩阵乘方
*/
#include <stdio.h>
int b, m;
int a[2][2], ans[2][2], temp[2][2] = {1,1,1,1};
void play()
{
int cnt, cnt2;
for(cnt = 0; cnt < 2; ++cnt)
{
for(cnt2 = 0; cnt2 < 2; ++cnt2)
{
printf("%d ", ans[cnt][cnt2]);
}
printf("\n");
}
}
void cp(int arr1[][2], int arr2[][2])
{
int cnt, cnt2;
for(cnt = 0; cnt < 2 ;++cnt)
for(cnt2 = 0; cnt2 < 2; ++cnt2)
arr1[cnt][cnt2] = arr2[cnt][cnt2];
}
void mod(int arr[][2])
{
int cnt, cnt2;
for(cnt = 0; cnt < 2; ++cnt)
for(cnt2 = 0; cnt2 < 2; ++cnt2)
arr[cnt][cnt2] %= m;
}
void fun2(int a[][2], int b[][2])
{
int cnt, cnt2;
temp[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0];
temp[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1];
temp[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0];
temp[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1];
}
void fun(int arr[][2], int k)
{
int cnt;
if(k == 0)
{
mod(temp);
cp(ans, temp);
return;
}
if(k == 1)
{
mod(ans);
return;
}
if(k == 2)
{
fun2(a, a);
cp(ans, temp);
// printf("2\n");
// play();
mod(ans);
return;
}
if(k%2 == 0)
{
fun(arr, k/2);
fun2(ans, ans);
cp(ans, temp);
//printf("=0\n");
//play();
mod(ans);
return;
}
if(k%2 != 0)
{
fun(arr, k-1);
fun2(ans, arr);
cp(ans, temp);
//printf("!=0\n");
// play();
mod(ans);
return;
}
}
int main()
{
int cnt, cnt2;
scanf("%d%d", &b, &m);
for(cnt = 0; cnt < 2; ++cnt)
for(cnt2 = 0; cnt2 < 2; ++cnt2)
{
scanf("%d", &a[cnt][cnt2]);
ans[cnt][cnt2] = a[cnt][cnt2];
}
fun(a, b);
play();
return 0;
}
/*
算法提高 夺宝奇兵
*/
//夺宝奇兵
#include<stdio.h>
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
int N,i,j;
int a[101][101]={0};
int f[101][10]={0};
scanf("%d",&N);
for(i=1;i<=N;i++)
for(j=1;j<=i;j++)
scanf("%d",&a[i][j]);
for(i=N;i>=0;i--)
for(j=1;j<=i;j++)
{
f[i][j]=max( f[i+1][j],f[i+1][j+1] )+a[i][j];
}
printf("%d\n",f[1][1]);
return 0;
}
/*
算法提高 利息计算
*/
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
double x,n;
double sum=0;
scanf("%lf",&x);
scanf("%lf",&n);
sum=x+(x*(n/100)*0.8);
printf("%.2lf",sum);
return 0;
}