usaco preface

原创 2012年03月21日 23:08:05

题目很简单,这种题做起来也不会错,不过做法很搓,代码很长。

/*
ID: stormdp1
LANG: C++
TASK: preface
*/
#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std;

int i, v, x;
int l, c, d;
int m;

void Cal(int n)
{
    if(n / 1000 > 0) {
        m += n / 1000;
        n %= 1000;
    }
    if(n / 100 > 0) {
        if(n / 100 <= 3) {
            c += n / 100;
        }
        else if(n / 100 <= 8) {
            d += 1;
            c += abs(n / 100 - 5);
        }
        else {
            m++;
            c++;
        }
        n %= 100;
    }
    if(n / 10 > 0) {
        if(n / 10 <= 3) {
            x += n / 10;
        }
        else if(n / 10 <= 8) {
            l += 1;
            x += abs(n / 10 - 5);
        }
        else {
            c++;
            x++;
        }
        n %= 10;
    }
    if(n > 0) {
        if(n <= 3) {
            i += n;
        }
        else if(n <= 8) {
            v += 1;
            i += abs(n - 5);
        }
        else {
            x++;
            i += 1;
        }
    }
}

int main()
{
    int num;
    
    freopen("preface.in", "rb", stdin);
    freopen("preface.out", "wb", stdout);
    while(scanf("%d", &num) != EOF) {
        i = v = x = 0;
        l = c = d = 0;
        m = 0;
        
        for(int j = 1; j <= num; j++)
            Cal(j);
        
        if(i)
            printf("I %d\n", i);
        if(v)
            printf("V %d\n", v);
        if(x)
            printf("X %d\n", x);
        if(l)
            printf("L %d\n", l);
        if(c)
            printf("C %d\n", c);
        if(d)
            printf("D %d\n", d);
        if(m)
            printf("M %d\n", m);        
    }
    
    fclose(stdin);
    fclose(stdout);
    return 0;
}       

USACO入门以及提交格式

从今天开始正式尝试usaco,刚注册了账号,发现验证码怎么都刷不出来,后来查了才知道是谷歌的验证码,被墙掉了,只能翻了墙才注册好 【usaco是美国中学生的官方竞赛网站,美国著名在线题库,专门为信息...
  • niskoy
  • niskoy
  • 2015年12月14日 21:52
  • 1599

[USACO Jan09]安全路径Safe Travel解题报告

题目 http://cojs.tk/cogs/problem/problem.php?pid=279 分析 首先把最短路径树画出来(由题意最短路径唯一,所以是树): 其中1是根。我们...
  • wmdcstdio
  • wmdcstdio
  • 2015年07月01日 08:02
  • 1227

USACO 1.3 Wormholes (不会做,贴官方解答)

描述 农夫约翰爱好在周末进行高能物理实验的结果却适得其反,导致N个虫洞在农场上(2 根据他的计算,约翰知道他的虫洞将形成 N/2 连接配对。例如,如果A和B的虫洞连接成一对,进入虫洞A...
  • wdkirchhoff
  • wdkirchhoff
  • 2014年11月27日 11:05
  • 4051

USACO Preface Numbering

我很不争气的用了最简单的枚举,觉得自己在对照string数组分析字母的函数处理上还是不错滴 /* ID: wangxin12 PROG: preface LANG: C++ */ #include...
  • neostar2008
  • neostar2008
  • 2012年07月20日 01:58
  • 311

【哈希】USACO-cha2-sec2.2 Preface Numbering

Preface Numbering A certain book's prefaces are numbered in upper case Roman numerals. Traditiona...
  • u012325552
  • u012325552
  • 2014年11月23日 20:42
  • 661

USACO:2.2.1 Preface Numbering 序言页码

USACO:2.2.1 Preface Numbering 序言页码 一、题目描述 ★Preface Numbering 序言页码 一类书的序言是以罗马数字标页码的.传统罗马数字用单个字母表示特定的数...
  • E_pen
  • E_pen
  • 2015年05月31日 16:26
  • 1295

USACO 2.2 Preface Numbering

这道题让我想到了之前Chapter 1的计算星期五的那道题。 罗马数字的书写规律见罗马数字。在我的理解中,罗马数字就是十进制的复杂版,每一个位数上的数字单独转化成一组字母,这样罗马数字的书写就完成了。...
  • dunceiam
  • dunceiam
  • 2015年03月17日 14:49
  • 183

【乱搞】USACO-cha1-sec1.3 Preface Numbering

Combination Lock Farmer John's cows keep escaping from his farm and causing mischief. To try an...
  • u012325552
  • u012325552
  • 2014年12月26日 11:29
  • 818

USACO Section 2.2 Preface Numbering

/* ID: lucien23 PROG: preface LANG: C++ */ #include #include #include #include using namespace ...
  • LucienDuan
  • LucienDuan
  • 2014年07月28日 17:17
  • 626

USACO-Section2.2 Preface Numbering【暴力枚举】

题目描述:一类书的序言是以罗马数字标页码的。传统罗马数字用单个字母表示特定的数值,以下是标准数字表: I 1 V 5 X 10 L 50 C 100 D 500 M 1000 最多3...
  • tjj1998
  • tjj1998
  • 2017年07月13日 12:01
  • 81
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:usaco preface
举报原因:
原因补充:

(最多只允许输入30个字)