邱浩宇


私信TA

用户名:uq_51612810454

访问量:729

签 名:

等  级
排  名 24277
经  验 618
参赛次数 1
文章发表 3
年  龄 19
在职情况 学生
学  校 宿迁学院
专  业 信息与计算科学

  自我简介:

解题思路:
    首先用一个数组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 人评分

  评论区

  • «
  • »