本文主要是介绍洛谷 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;
}
这篇关于洛谷 U2878 小R的分数比赛(fraction)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!