文章

49

粉丝

140

获赞

27

访问

17.2k

头像
最简真分数 题解:求大佬帮我看一下这个小问题,考虑很久都没出来
P1180 北京大学/北京航空航天大学机试题
发布于2024年1月25日 22:39
阅读数 349

#include<iostream>
#include <string.h>
using namespace std;
int main(){
int n=0,c=0,index=0,x=0,y=0;
double a[1000];
double b[1000];
double cc=0;                    
while(cin >> n){
	c=0;
	cc=0;
	index=0;
	x=0;
	y=0;
for(int i=0;i<1000;i++){
	a[i]=0;
	b[i]=0;
}
for(int i=0;i<n;i++)
	cin >> a[i];
for(int i=0;i<n;i++){
	for(int j=0;j<n;j++){
		if(j==i)
			continue;
		else{
			if(a[i]>a[j])//a[i]为分子 a[j]为分母
                continue;
			else{
           for(int ii=a[i];ii>=2;ii--)
		   {  x=a[i];
		     y=a[j];
			   if(x%ii==0&&y%ii==0){
				
					index=1;
				   break;
			   }
		   }
		   if(index==0){
			    //cc=a[i]/a[j];
				//  cout << cc <<endl;
					   b[c++]=cc;
				  }

		   }
		   }
		   index=0;
			}
		}
	
cout <<c <<endl;
}
	//system("pause");
	return 0;
}

 

 这个用double 数组,然后再用两个int 转化结果是超出范围

#include<iostream>
#in...
登录查看完整内容


登录后发布评论

3 条评论
小王桐学
2024年2月6日 15:57

你这个好复杂啊

赞(0)
snake
2024年1月26日 11:02

逻辑有区别,直接强转是可以的

#include<iostream>
#include <string.h>
using namespace std;
int main(){
int n=0,c=0,index=0;
double  a[1000];
double  b[1000];                  
while(cin >> n){
	c=0;
for(int i=0;i<1000;i++){
	a[i]=0;
	b[i]=0;
}
for(int i=0;i<n;i++)
	cin >> a[i];
for(int i=0;i<n;i++){
	for(int j=0;j<n;j++){
		index=0;
		if(j==i)
			continue;
		else{
			if(a[i]>=a[j])//a[i]为分子 a[j]为分母
                continue;
			else{
           for(int ii=2;ii<=a[i];ii++)
{ 
			   if(((int)a[i]%ii==0)&&((int)a[j]%ii==0)){
					index=1;
				   break;
}
}
		   if(index==0)
			   c++;
}
}
} 

}	
cout <<c <<endl;
}
	return 0;
}

 

赞(1)

孙某人 : 回复 snake: 谢谢明白了

2024年1月26日 11:43