Grupo escalera partido Programación número L1-009 N de la suma

Sumando el número L1-009 N

Sumando el número de enlaces sujeto -L1-009 N
requisitos de este problema es muy simple, consiste en calcular el número de N y. El problema es que estos números son la forma / denominador racional molecular que da la salida y también debe estar en la forma de números racionales.

Formato de entrada:
entrada de la primera fila se le da un número entero positivo N (≤100). A continuación, la línea de formato A1 / A2 B1 / B2 ... N determinado número racional. Tema para garantizar que todo el numerador y el denominador están dentro del rango de un entero largo. Además, símbolo negativo debe aparecer delante de la molécula.

Formato de salida:
su forma más simple la salida digital y el - escritura resultado entero parte fraccionaria porción de pronto con el numerador / denominador parte fraccionaria por escrito, el denominador es menor que las moléculas necesarias y no tienen factores comunes. Si la parte entera del resultado es 0, sólo la salida de la parte fraccionaria.

Ejemplo de entrada 1:

5
2/5 4/15 1/30 -2/60 8/3

Muestra de Producto 1:

3 1/3

Ejemplo de entrada 2:

2
4/3 2/3

Muestra Producto 2:

2

Ejemplo de entrada 3:

3
1/3 -1/6 1/8

Salida de muestra 3:

7/24

Ideas de resolución de problemas

simulación

  • Esta pregunta denominador porque los datos es relativamente grande, por lo que al abrir mucho, mucho
  • Necesidad de punto sumador Simular, hacer un denominador común denominador entre las dos fracciones y después de cada operación, la simplificación, el número n no puede tomar el mínimo común múltiplo del denominador, y cálculo finalmente simplificado, el denominador o menos común múltiplo puede explotar largo largo
  • Luego juez especial para ver si el resultado final se puede reducir a número entero
  • Si no se convierte en un entero, continuará para determinar si la puntuación es fracciones impropias a números mixtos si es necesario
  • operaciones específicas, ver el código

adjuntar Código

#include<bits/stdc++.h>
#define lowbit(x) (x &(-x))
using namespace std;
const int INF=0x3f3f3f3f;
const double PI=acos(-1.0);
const double eps=1e-10;
const int M=1e9+7;
const int N=1e5+5;
typedef long long ll;
typedef pair<int,int> PII;
int main(){
	
	ll n;
	scanf("%lld",&n);
	ll a,b,c,d;
	scanf("%lld/%lld",&a,&b);
	for(ll i=1;i<n;i++){
		scanf("%lld/%lld",&c,&d);
		int gcd=__gcd(b,d);
		int lcm=b*d/gcd;
		a=a*lcm/b+c*lcm/d;
		b=lcm;
		int m=__gcd(a,b);
		a/=m;
		b/=m;
	}
	if(b<0){
		a=-a;
		b=-b;
	}
	a%b==0?printf("%lld\n",a/b):a/b==0?printf("%lld/%lld\n",a,b):printf("%lld %lld/%lld",a/b,a-a/b*b,b);
	return 0;
}

Publicados 123 artículos originales · ganado elogios 10 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/Fiveneves/article/details/104907328
Recomendado
Clasificación