解题思路:
首先用一个数组r[10000][2]来记录所有的从 普通金属 转换为 特殊金属 的记录,使用v[10000]数组来记录所有的 转换率 。
可以发现,所有的转换率记录中最小的一个转换率记录就是 符合条件的 最大的 转换率记录。
我们可以用maxv来保存v[0]的记录再通过遍历的方法比较找出最小的v记录保存在maxv当中。
而后我们可以通过两层的for循环,外层从i=maxv开始依次递减一 以flag为结束标识(flag初值为1),内层通过 r[j][0]/i!=r[j][1] 来遍历所有的转换记录若有i代入后结果不符合记录则将标识flag=0并break,如果当前i符合所有的r记录则将minv更新成这个i。跳出循环后minv保存的就是最小的转换率-1的结果。所以输出时要将minv+1。
注意事项:
参考代码:
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int n,v[10000],maxv,minv,i,j,r[10000][2],flag=1; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d%d",&r[i][0],&r[i][1]); v[i]=r[i][0]/r[i][1]; } maxv=minv=v[0]; for(i=0;i<n;i++) { if(v[i]<maxv) { maxv=v[i]; } } for(i=maxv;flag;i--) { for(j=0;j<n;j++) { if(r[j][0]/i!=r[j][1]) { flag=0; break; } } minv=i; } printf("%d %d",minv+1,maxv); return 0; }
0.0分
4 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复