读书人

NYOJ 647 奋斗小蜗牛在宴客【模拟】

发布时间: 2013-03-22 09:49:50 作者: rapoo

NYOJ 647 奋斗小蜗牛在请客【模拟】

原题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=647

思路:没啥说的,本想用java写,没找到double进制转换的对应函数。。就该用c++,本想偷懒下,直接用string,然后找个string转化double的函数,最后还是失败了 用sstream,格式会变。。发现其实最简单的方法就是直接用数组模拟。。一直想偷懒下,结果绕了一个圈。。。

先提供个double型化二进制的模版,这里不考虑格式。。

#include<sstream>#include<stdlib.h>#include<algorithm>#include<iostream>using namespace std;string::iterator it;string Trans(long Integer){    if(Integer == 0) return "0";    string temp="";    while(Integer)    {        temp = char(Integer%2+48)+temp;        Integer/=2;    }    return temp;}string Trans(double Decimal){    string temp=".";    int n = 20;    while(Decimal&&n)    {        Decimal*=2;        temp = temp + char(int(Decimal)+48);        Decimal = Decimal - int(Decimal);        n--;    }    return temp;}int main(){    int i,j;    double x;    while(cin>>x)    {        long Integer = long(x);        double Decimal = x-Integer;        double ans;        string Ans = Trans(Integer) + Trans(Decimal);        //cout<<Ans<<endl;                /*根据题目进行的格式控制、、*/        int n = Ans.length();        while(--n)        {            it = Ans.end()-1;            if(Ans[n] == '0')                 Ans.erase(it);            else if(Ans[n] == '.')            {                Ans.erase(it);                break;            }            else                break;        }        cout<<Ans<<endl;        /*        stringstream ss;        ss<<Ans;        ss>>ans;        ss.clear();        cout<<ans<<endl;        */    }}


读书人网 >编程

热点推荐