洛谷 U2878 小R的分数比赛(fraction)

题目提供者 2015c07

标签 数论(数学相关) 高精度

难度 尚无评定

通过/提交 0/29

提交该题 记录

题目背景

P5难度系数:★★★☆☆

小R再次挑战你。 这次的挑战又会是什么呢?

题目描述

裁判组给出的题目:

任意给出一个分数(分子必定是1,分母可能非常大)(假设分数是x分之一,则输入用1/x表示。),求1/x=1/(x+1)+()。

输入输出格式

输入格式:

一行,为初始分数。

输出格式:

一行,为括号答案。

输入输出样例

输入样例#1:

1/3

输出样例#1:

1/12(⅓(0.33333……)=¼(0.25)+1/12(0.08333……))

说明

样例括号内为样例解释,不必输出(只需输出1/12)。

初始分数的分母≤2^32-1

/*
高精度乘法+最小公倍数(乱搞)
*/
#include<iostream>
#include<cstdio>
#define MAXN 1001
using namespace std;
long long a[MAXN],b[MAXN],m[MAXN],n[MAXN],c[MAXN],l1,l2,x,xx;
void init()
{
while(x)
{
a[++l1]=x%10;
x/=10;
}
}
void init2()
{
while(xx)
{
b[++l2]=xx%10;
xx/=10;
}
}
void solve()
{
for(int i=1;i<=l1;i++)
{
x=0;
for(int j=1;j<=l2;j++)
{
c[i+j-1]=x+c[i+j-1]+a[i]*b[j];
x=c[i+j-1]/10;
c[i+j-1]%=10;
}
c[i+l2]=x;
}
int l3=l1+l2;
while(c[l3]==0&&l3>1)
{
l3--;
}
for(int i=l3;i>=1;i--)
{
cout<<c[i];
}
}
int main()
{
char a,b;
cin>>a>>b>>x;
xx=x+1;
cout<<"1"<<"/";
init();
init2();
solve();
return 0;
}
上一篇:json.dumps(),json.loads(),json.dump(),json.load()方法的区别


下一篇:App Store有哪些原因会影响app应用上架呢?(分享)