zoukankan      html  css  js  c++  java
  • 洛谷 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;
    }
  • 相关阅读:
    命令别名与历史命令
    Shell的变量功能
    Shell的变量功能
    认识BASH这个Shell
    vim程序编辑器
    其他vim使用注意事项
    vim的额外功能
    六、集合
    五、字典
    四、列表 元组
  • 原文地址:https://www.cnblogs.com/nancheng58/p/6070845.html
Copyright © 2011-2022 走看看