解题思路:
首先用一个数组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分
8 人评分
C语言训练-自守数问题 (C语言代码) long long浏览:1067 |
字符串输入输出函数 (Java代码)浏览:1440 |
小明A+B (C语言代码)浏览:1256 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:718 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:605 |
printf基础练习2 (C语言代码)浏览:748 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:591 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)from DQM浏览:671 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:549 |
简单的事情 (C语言代码)浏览:638 |