算法-蓝桥杯习题(4-3)
- 入门训练(详见 算法-蓝桥杯习题(1-1))
- 基础练习(详见 算法-蓝桥杯习题(2-1))
- 基础练习(详见 算法-蓝桥杯习题(2-2))
- 算法训练(详见 算法-蓝桥杯习题(3-1))
- 算法训练(详见 算法-蓝桥杯习题(3-2))
- 算法训练(详见 算法-蓝桥杯习题(3-3))
- 算法训练(详见 算法-蓝桥杯习题(3-4))
- 算法训练(详见 算法-蓝桥杯习题(3-5))
- 算法训练(详见 算法-蓝桥杯习题(3-6))
- 算法提高(详见 算法-蓝桥杯习题(4-1))
- 算法提高(详见 算法-蓝桥杯习题(4-2))
- 算法提高(详见 算法-蓝桥杯习题(4-3))
- 历届试题(详见 算法-蓝桥杯习题(5-1))
- 历届试题(详见 算法-蓝桥杯习题(5-2))
/* 算法提高 多项式输出 */ //多项式输出 #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; }
内容来自我摘摘捡捡的.......笔记或者原创,如果想看细节的出处,请到我的博客来看看吧~~~
https://www.cnblogs.com/suishou/