USACO Section2.2 Preface Numbering 解题报告 【icedream61】
preface解题报告
------------------------------------------------------------------------------------------------------------------------------------------------
【题目】
阿拉伯数字转换为罗马数字的规则如下:
1: I
2: II
3: III
4: IV
5: V
6: VI
7: VII
8: VIII
9: IX
10: X
而我们本题可以用到的罗马数字符号有:
I=1
V=5
X=10
L=50
C=100
D=500
M=1000
如果你还不大明白,那我们举两个例子:
3 7 9 = CCC LXX IX
3 4 9 9 = MMM CD XC IX
如果你仍然不明白,那……你去USACO看原题,或者去网上搜罗马数字表示规则吧...orz
本题给出阿拉伯数N,求出1~N所有阿拉伯数分别转换成罗马数之后,所包含的各种字符的个数。
【数据范围】
1<=N<3500
【输入样例】
5
【输出样例】
I 7
V 2
------------------------------------------------------------------------------------------------------------------------------------------------
【分析】
就像我题目描述中说的思路,把0~9分别一一对应起来便可以很容易转换了。
------------------------------------------------------------------------------------------------------------------------------------------------
【总结】
一遍AC。
顺带复习了下运算符重载。有一点失误是,开始本来打算在main里写num+=convert(i)的,可是重载时写成了加法,于是就把main里改成了num=num+convert(i)。
------------------------------------------------------------------------------------------------------------------------------------------------
【代码】
/*
ID: icedrea1
PROB: preface
LANG: C++
*/ #include <iostream>
#include <fstream>
using namespace std; struct number
{
int I,V; // 1,5
int X,L; // 10,50
int C,D; // 100,500
int M; //
number(int i=,int v=,int x=,int l=,int c=,int d=,int m=):I(i),V(v),X(x),L(l),C(c),D(d),M(m) {}
friend number operator+(number x,number y)
{
number r;
r.I=x.I+y.I;
r.V=x.V+y.V;
r.X=x.X+y.X;
r.L=x.L+y.L;
r.C=x.C+y.C;
r.D=x.D+y.D;
r.M=x.M+y.M;
return r;
}
friend ostream& operator<<(ostream& out,number x)
{
if(x.I) out<<"I "<<x.I<<endl;
if(x.V) out<<"V "<<x.V<<endl;
if(x.X) out<<"X "<<x.X<<endl;
if(x.L) out<<"L "<<x.L<<endl;
if(x.C) out<<"C "<<x.C<<endl;
if(x.D) out<<"D "<<x.D<<endl;
if(x.M) out<<"M "<<x.M<<endl;
return out;
}
}num; int N; number convert(int i) // 由于只需要计数,所以实际上并不需要转换全,例如4和6不用加以区分
{
number r;
int m=i/; i%=;
int c=i/; i%=;
int x=i/; i%=;
switch(i)
{
case : break;
case : r.I=; break;
case : r.I=; break;
case : r.I=; break;
case : r.V=; r.I=; break;
case : r.V=; break;
case : r.V=; r.I=; break;
case : r.V=; r.I=; break;
case : r.V=; r.I=; break;
case : r.X=; r.I=; break;
}
switch(x)
{
case : break;
case : r.X+=; break;
case : r.X+=; break;
case : r.X+=; break;
case : r.L+=; r.X+=; break;
case : r.L+=; break;
case : r.L+=; r.X+=; break;
case : r.L+=; r.X+=; break;
case : r.L+=; r.X+=; break;
case : r.C+=; r.X+=; break;
}
switch(c)
{
case : break;
case : r.C+=; break;
case : r.C+=; break;
case : r.C+=; break;
case : r.D+=; r.C+=; break;
case : r.D+=; break;
case : r.D+=; r.C+=; break;
case : r.D+=; r.C+=; break;
case : r.D+=; r.C+=; break;
case : r.M+=; r.C+=; break;
}
r.M+=m;
return r;
} int main()
{
ifstream in("preface.in");
ofstream out("preface.out"); in>>N;
for(int i=;i<=N;++i) num=num+convert(i);
out<<num; in.close();
out.close();
return ;
}
USACO Section2.2 Preface Numbering 解题报告 【icedream61】的更多相关文章
- USACO Section2.1 The Castle 解题报告
castle解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...
- USACO Section2.1 Ordered Fractions 解题报告
frac1解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...
- USACO Section2.1 Healthy Holsteins 解题报告 【icedream61】
holstein解题报告 --------------------------------------------------------------------------------------- ...
- USACO Section2.1 Hamming Codes 解题报告 【icedream61】
hamming解题报告----------------------------------------------------------------------------------------- ...
- USACO Section2.3 Controlling Companies 解题报告 【icedream61】
concom解题报告------------------------------------------------------------------------------------------ ...
- USACO Section2.3 Money Systems 解题报告 【icedream61】
money解题报告------------------------------------------------------------------------------------------- ...
- USACO Section2.3 Zero Sum 解题报告 【icedream61】
zerosum解题报告----------------------------------------------------------------------------------------- ...
- USACO Section2.3 Cow Pedigrees 解题报告 【icedream61】
nocows解题报告------------------------------------------------------------------------------------------ ...
- USACO Section2.3 Longest Prefix 解题报告 【icedream61】
prefix解题报告------------------------------------------------------------------------------------------ ...
随机推荐
- IOS 自定义代理delegate方法
创建一个自定义代理 @class MJTgFooterView; /** 1.协议名称: 控件类名 + Delegate 2.代理方法普遍都是@optional 3. */ @protocol MJT ...
- 在vue中同时使用过渡和动画
在上次的动画中,在显示和隐藏有动画效果,但是,刷新页面的时候,第一次的显示没有动画效果 需求:刷新页面的时候也有动画效果 <transition name='fade' appear enter ...
- flex布局-常用布局
在使用flex布局,老是需要去查资料,很多常用的,知道大概,可还是需要去过一遍,这里记录一下几个常用的flex布局 一个div,内容垂直居中 html <div className='topHe ...
- 2018.8.17 关于JavaScript的几种常见的全局函数
JavaScript常见的全局函数 <!doctype html> <html lang="en"> <head> <meta chars ...
- 关于 npm install 命令
使用 `npm install` 命令安装模块时 ,有以下几种形式: 安装模块到项目 node_modules 目录下,不会将模块依赖写入 dependencies 或 devDependencies ...
- 命令搜索命令whereis与which
whereis 命令名 #搜索命令所在路径及帮助文档所在位置,只能搜索系统命令. 选项: -b: 只查找可执行文件 -m: 只查找帮助文件 whoami whatis ls #ls 是什么命令 whi ...
- jQuery实现轮播切换以及将其封装成插件(2)
在上一篇博文中,我们完成了一个简单的轮播切换.它的功能比较简单,仅仅能定时切换图片. 但是有没有这样一种情况.当我们特意的想看某一个轮播显示项时不希望等轮播一圈才能等到,希望通过图上的一些元素,触发某 ...
- ADO.NET之一:连接层
ADO.NET大部分由System.Data.dll核心程序集来表示. ADO.NET类库有三种完全不听的方式来实现数据访问:连接式.断开式和通过Entity框架.连接式就是会一直占用网络资源,断开式 ...
- CentOS 系统 Docker 的命令大全
本文记录 CentOS 系统 Docker 的命令大全 命令 docker ps 显示运行中的容器 docker ps -a 显示所有容器 docker start 容器名称 启动容器 docker ...
- (转)为什么国外 MMORPG 中不采用自动寻路等功能?
不只是自动寻路,现在网游中的教学引导系统,辅助系统的功能强大程度,友好程度都可以说到了变态的程度,开发这些功能投入的资源甚至要超过游戏内容本身.究其原因,还是竞争越来越激烈,人心越来越浮躁,游戏商家为 ...