• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            syhd142  
            日歷
            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567
            統(tǒng)計(jì)
            • 隨筆 - 23
            • 文章 - 122
            • 評(píng)論 - 31
            • 引用 - 0

            導(dǎo)航

            常用鏈接

            留言簿(2)

            隨筆檔案(23)

            文章分類(270)

            文章檔案(122)

            我的豆瓣

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

             
            羅馬數(shù)字和阿拉伯?dāng)?shù)字的裝換。
            給出若干個(gè)羅馬數(shù)字,求和,并用羅馬數(shù)字輸出。思路很簡(jiǎn)單,需要兩個(gè)函數(shù)進(jìn)行轉(zhuǎn)換。
            關(guān)于羅馬數(shù)字[來(lái)自百度百科]羅馬數(shù)字有如下符號(hào):

            Ⅰ(1)Ⅴ(5)Ⅹ(10)L(50)C(100)D(500)M(1000)

            計(jì)數(shù)規(guī)則:

            1.若干相同數(shù)字連寫表示的數(shù)是這些羅馬數(shù)字的和,如III=3;

            2.小數(shù)字在大數(shù)字前面表示的數(shù)是用大數(shù)字減去小數(shù)字,如IV=4;

            3.小數(shù)字在大數(shù)字后面表示的數(shù)是用大數(shù)字加上小數(shù)字,如VI=6;

            組合規(guī)則:

            (1)基本數(shù)字Ⅰ、X 、C 中的任何一個(gè),自身連用構(gòu)成數(shù)目,或者放在大數(shù)的右邊連用構(gòu)成數(shù)目,都不能超過(guò)三個(gè);放在大數(shù)的左邊只能用一個(gè)。

            (2)不能把基本數(shù)字 V 、L 、D 中的任何一個(gè)作為小數(shù)放在大數(shù)的左邊采用相減的方法構(gòu)成數(shù)目;放在大數(shù)的右邊采用相加的方式構(gòu)成數(shù)目,只能使用一個(gè)。
            (3)V 和 X 左邊的小數(shù)字只能用Ⅰ。
            (4)L 和 C 左邊的小數(shù)字只能用×。
            (5)D 和 M 左 邊的小數(shù)字只能用 C 。

            題目分析羅馬數(shù)字轉(zhuǎn)阿拉伯?dāng)?shù)字:

            從前往后遍歷羅馬數(shù)字,如果某個(gè)數(shù)比前一個(gè)數(shù)小,則把該數(shù)加入到結(jié)果中;反之,則在結(jié)果中兩次減去前一個(gè)數(shù)并加上當(dāng)前這個(gè)數(shù);

            阿拉伯?dāng)?shù)字轉(zhuǎn)羅馬數(shù)字:

            這也是比賽時(shí)我頭疼的,看了看網(wǎng)上的例子,發(fā)現(xiàn)一個(gè)和你巧妙的處理方式。把所有小數(shù)字在前的組合也作為基本數(shù)字,再做一個(gè)對(duì)應(yīng)的數(shù)值表就可以解決問(wèn)題了。

            以上分析轉(zhuǎn)至:http://www.cnblogs.com/dosxp/archive/2008/08/13/1266781.html

            #include <iostream> 
            #include 
            <string>
            #include 
            <map>
            using namespace std;

            int mp[100];
            int val[]={1000,900,500,400,100,90,50,40,10,9,5,4,1};
            string r[]={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
            map
            <stringint> roman;

            void init()
            {
                mp[
            'I']=1;
                mp[
            'V']=5;
                mp[
            'X']=10;
                mp[
            'L']=50;
                mp[
            'C']=100;
                mp[
            'D']=500;
                mp[
            'M']=1000;
                
            return;
            }

            int r2n(char *str)
            {
                
            int re, pre;
                re 
            = pre = mp[str[0]];
                
            for(int i = 1; str[i]; i++)
                {
                    
            if(mp[str[i]] <= pre) re += mp[str[i]];
                    
            else re = re - 2 * pre + mp[str[i]];
                    pre 
            = mp[str[i]];
                }
                
            return re;
            }

            string n2r(int k)
            {
                
            int i = 0;
                
            string re = "";
                
            while(k > 0)
                {
                    
            while(k >= val[i])
                    {
                        re 
            += r[i];
                        k 
            -= val[i];
                    }
                    i
            ++;
                }
                
            return re;
            }

            int main()
            {
                init();
                
            for(int i = 1; i < 4000; i++) roman[n2r(i)] = i;
                
            char data[105];
                
            while(gets(data))
                {
                    
            int t = roman[data];
                    
            if(!t) puts("This is not a valid number");
                    
            else printf("%d\n", t);
                }
                
            return 0;
            }
            posted on 2010-10-06 21:09 Fucker 閱讀(228) 評(píng)論(0)  編輯 收藏 引用 所屬分類: ACM/ICPC簡(jiǎn)單
             
            Copyright © Fucker Powered by: 博客園 模板提供:滬江博客
            婷婷五月深深久久精品| 91精品国产高清久久久久久91| 久久天天躁狠狠躁夜夜2020老熟妇| 国产 亚洲 欧美 另类 久久| 久久久久国色AV免费观看| 思思久久好好热精品国产| 日韩精品久久无码中文字幕| 狠狠色综合久久久久尤物| 国产精品久久久久蜜芽| 久久人爽人人爽人人片AV| 精品久久久久久99人妻| 久久人人爽人人爽人人片AV不| 国产精品一区二区久久国产| 久久久久久久久久久免费精品 | 久久AV高清无码| 精品久久久久久无码人妻热| 亚洲av日韩精品久久久久久a| 日本一区精品久久久久影院| 日韩精品无码久久久久久| 亚洲欧美日韩精品久久亚洲区 | 久久国产精品无码HDAV| 久久久人妻精品无码一区| 久久精品国产影库免费看| 精品久久久无码21p发布 | 亚洲国产精品久久电影欧美| 久久久久久A亚洲欧洲AV冫| 久久精品草草草| 久久―日本道色综合久久| 无码久久精品国产亚洲Av影片| 欧美亚洲国产精品久久久久| 久久久久久国产精品免费免费| 久久综合丝袜日本网| 色噜噜狠狠先锋影音久久| 久久91精品国产91久久户| 国内精品久久久久久99蜜桃| 无码超乳爆乳中文字幕久久| 久久久久亚洲av综合波多野结衣| 国产免费久久精品99re丫y| 国产精品久久久香蕉| 亚洲伊人久久精品影院| 国内精品伊人久久久久av一坑 |