N个数求和
来源:互联网 发布:levered beta知乎 编辑:程序博客网 时间:2024/06/05 14:12
#include<stdio.h>
long long gcd_gcd(long long x,long long y) //求最大公约数
{
int xy=1;
while(xy)
{
xy=x%y;
x=y;
y=xy;
}
return x;
}
long long lcm_lcm(int a,int b) //求最小公倍数
{
long long gcd;
gcd=gcd_gcd(a,b);
return a*b/gcd;
}
int main()
{
long long fz[100],fm[100];
int i,j,n;
long long ffz,ffm,lcm,gcd,mul1,mul2,zhen;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%lld/%lld",&fz[i],&fm[i]);
}
ffz=fz[0]; //对ffz和ffm赋初值,然后用for循环依次与后面的分数相加
ffm=fm[0];
for(i=1;i<n;i++) //加上后面的分数
{
lcm=lcm_lcm(ffm,fm[i]); //ffm代表的是前i项的分母,fm[i]代表的是第i项的分母
mul1=lcm/ffm*ffz;
mul2=lcm/fm[i]*fz[i];
ffz=mul1+mul2;
ffm=lcm;
gcd=gcd_gcd(ffz,ffm); //
ffz/=gcd; // 将得到的最新的分数约分,否则数会过大
ffm/=gcd; //
}
if(!ffz) //若分子为0
{
printf("0\n");
}
else
{
gcd=gcd_gcd(ffz,ffm);
ffz/=gcd;
ffm/=gcd;
zhen=ffz/ffm; //求真数
if(!zhen) //真数为0,说明分数小于1,没有真数
{
printf("%lld/%lld\n",ffz,ffm);
}
else
{
ffz-=(zhen*ffm);
if(ffz!=0)
{
printf("%lld %lld/%lld\n",zhen,ffz,ffm);
}
else //此时分数正好为1
{
printf("%lld\n",zhen);
}
}
}
return 0;
}
long long gcd_gcd(long long x,long long y) //求最大公约数
{
int xy=1;
while(xy)
{
xy=x%y;
x=y;
y=xy;
}
return x;
}
long long lcm_lcm(int a,int b) //求最小公倍数
{
long long gcd;
gcd=gcd_gcd(a,b);
return a*b/gcd;
}
int main()
{
long long fz[100],fm[100];
int i,j,n;
long long ffz,ffm,lcm,gcd,mul1,mul2,zhen;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%lld/%lld",&fz[i],&fm[i]);
}
ffz=fz[0]; //对ffz和ffm赋初值,然后用for循环依次与后面的分数相加
ffm=fm[0];
for(i=1;i<n;i++) //加上后面的分数
{
lcm=lcm_lcm(ffm,fm[i]); //ffm代表的是前i项的分母,fm[i]代表的是第i项的分母
mul1=lcm/ffm*ffz;
mul2=lcm/fm[i]*fz[i];
ffz=mul1+mul2;
ffm=lcm;
gcd=gcd_gcd(ffz,ffm); //
ffz/=gcd; // 将得到的最新的分数约分,否则数会过大
ffm/=gcd; //
}
if(!ffz) //若分子为0
{
printf("0\n");
}
else
{
gcd=gcd_gcd(ffz,ffm);
ffz/=gcd;
ffm/=gcd;
zhen=ffz/ffm; //求真数
if(!zhen) //真数为0,说明分数小于1,没有真数
{
printf("%lld/%lld\n",ffz,ffm);
}
else
{
ffz-=(zhen*ffm);
if(ffz!=0)
{
printf("%lld %lld/%lld\n",zhen,ffz,ffm);
}
else //此时分数正好为1
{
printf("%lld\n",zhen);
}
}
}
return 0;
}
0 0
- 任意n个数求和
- N个数求和
- N个数求和
- N个数求和
- N个数求和
- N个数求和
- PAT N个数求和
- 1039: n个数求和
- 任意前n个数求和
- 1~n 个数叠加求和
- L1-009. N个数求和
- L1-009. N个数求和
- L1-009. N个数求和
- L1-009. N个数求和
- L1-009. N个数求和
- L1-009. N个数求和
- L1-009. N个数求和
- L1-009. N个数求和
- mysql 字符集和排序
- android 7.0 changes for NDK developers
- PL/SQL 集合类型
- 垃圾回收
- spring mongodb中去掉_class列
- N个数求和
- Handler,Looper, Message解析(3)
- 框架开发之Java注解的妙用
- 洛谷P1303 A*B Problem
- 在腾讯云IIS上建立FTP文件服务的经验
- 排序算法整理
- JAVA中Math.round负数的取值
- pySpark记录
- 冻结时间倒数前一小时,记一次步步惊心的SQL优化